zoukankan      html  css  js  c++  java
  • VS2015如何新建C++或者C语言版的lib文件

      当我们不想公开我们的代码的时候,可以把我们的代码封装成静态数据连接库,即lib文件。下面介绍下如何生成lib文件。

      以VS2015为例,一种是C++版的lib文件,一种是C语言版的lib文件。

    一、按照下图新建Win32项目TestLib。

     二、选择静态库,取消预编译。

    三、新建完工程后,我们创建一个头文件和一个cpp文件。

    TestLib.h

    #pragma once
    
    void HelloWorld();

    TestLib.cpp

    #include <stdio.h>
    #include "TestLib.h"
    
    void HelloWorld()
    {
    	printf("Hello World
    ");
    }
    

    编译该工程后,我们得到一个TestLib.lib文件。

    四、再新建一个Win32控制台程序TestApp,进行测试。

    在TestApp.cpp里引入TestLib.h

    // TestApp.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "..TestLibTestLib.h"
    
    int main()
    {
        HelloWorld();
        return 0;
    }
    

    指定TestLib.lib的路径,方法如下:

    右键TestApp项目,点击属性,进入下图,在【连接器】--【输入】--【附加依赖项】里输入TestLib的路径。这里写的是相对路径 $(OutputPath)TestLib.lib。

    这样即使把我们的项目移到其他的目录里,依然能够进行debug。

    五、把TestApp项目设定成启动项。

    六、编译后,得到运行结果

    从上面可以看出我们的lib项目里的TestLib.cpp是cpp文件,即C++文件。

    如果我们把TestLib.cpp改成TestLib.c的话,这时候重新编译lib工程,然后运行TestApp,

    会出现如下错误:

    有时候,可能因为某种原因,lib文件必须是C语言,那么该怎么解决?

    这时候,我们需要更改我们TestLib.h这个文件。

    #pragma once
    
    #ifdef __cplusplus
    extern"C" {
    
    	void HelloWorld();
    #endif
    
    #ifdef __cplusplus
    }
    #endif
    
    为了在C++代码中调用用C写成的库文件,就需要用extern"C"来告诉编译器:这是一个用C写成的库文件,请用C的方式来链接它们。
    这样重新编译我们的Testlib.lib后,再次运行TestApp就可以了。
    高山流水,海纳百川!
  • 相关阅读:
    LeetCode Array Easy 414. Third Maximum Number
    LeetCode Linked List Medium 2. Add Two Numbers
    LeetCode Array Easy 283. Move Zeroes
    LeetCode Array Easy 268. Missing Number
    LeetCode Array Easy 219. Contains Duplicate II
    LeetCode Array Easy 217. Contains Duplicate
    LeetCode Array Easy 189. Rotate Array
    LeetCode Array Easy169. Majority Element
    LeetCode Array Medium 11. Container With Most Water
    LeetCode Array Easy 167. Two Sum II
  • 原文地址:https://www.cnblogs.com/ahcc08/p/6810033.html
Copyright © 2011-2022 走看看