VS2013生成lib和.dll并使用
2018-03-11 23:11
627 查看
(1) .dll .obj .lib使用在windows平台下。
.dll:动态链接库,作为共享函数库的可执行文件。
(2) .so .o .a使用在linux平台下。
参考链接
============================================================================
在VS(2013)下生成.lib文件步骤如下:
1.新建一个VS项目,Win32控制台应用程序。应用程序类型勾选静态库。附加项选择空项目等。
然后就完成了。
然后随便写个.h文件和.cpp文件。我的代码如下:
然后左边解决方案下面右击项目名,生成,如果没报错的话,就会生成一个libTest.lib了。如图:
然后如果要在别的项目里用,就需要在别的项目里引入.lib里所需的.h文件。
右击我图里的MyCpp项目,然后在下面图里的地方把.h文件包含后确定,或者直接拷贝.h文件到你当前项目的工作目录下。
然后还需要把.lib按照下图步骤给包含到当前项目里。
这样,就会按照下图所示,完成.lib的使用。
========
对于.dll文件。VS里也可以参照.lib创建的方式,创建的时候勾选DLL,但是必须要选预编译头。能看到dllTest项目目录如下:
当然,我们如果在勾选DLL的同时,勾选导出符号,那么系统会自动创建一个对应dllTest.cpp的dllTest.h,这样更方便,所以还是勾选下到处符号。
遇到新建的.cpp文件使用方法出现“不允许 dllimport 函数”时,记得在工程属性里的预定义宏添加上MYDLL_EXPORTS这种东西。
先帖代码:
然后生成:
成功,然后就可有使用了,但是得先去配置下工作目录,和DLL几乎一样。
只不过在使用的时候,需要额外加上#pragma comment(lib,”dllTest.lib”)这种代码。
打印输出结果如下图:
大功告成!
.dll:动态链接库,作为共享函数库的可执行文件。
.obj:目标文件,相当于源代码对应的二进制文件,未经重定位。 .lib:可理解为多个obj的集合,本质与.obj相同。
(2) .so .o .a使用在linux平台下。
.so:(share object)动态链接库,跟Windows平台类似。 .o: 目标文件,相当于源代码对应的二进制文件。 .a: 与.o类似,多个.o的集合。
参考链接
============================================================================
在VS(2013)下生成.lib文件步骤如下:
1.新建一个VS项目,Win32控制台应用程序。应用程序类型勾选静态库。附加项选择空项目等。
然后就完成了。
然后随便写个.h文件和.cpp文件。我的代码如下:
//testLib.h #include <iostream> class testLib{ public: void print(); };
//testLib.cpp #include "testLib.h" using std::cout; void testLib::print(){ cout << "this is a lib test"; }
然后左边解决方案下面右击项目名,生成,如果没报错的话,就会生成一个libTest.lib了。如图:
然后如果要在别的项目里用,就需要在别的项目里引入.lib里所需的.h文件。
右击我图里的MyCpp项目,然后在下面图里的地方把.h文件包含后确定,或者直接拷贝.h文件到你当前项目的工作目录下。
然后还需要把.lib按照下图步骤给包含到当前项目里。
这样,就会按照下图所示,完成.lib的使用。
========
对于.dll文件。VS里也可以参照.lib创建的方式,创建的时候勾选DLL,但是必须要选预编译头。能看到dllTest项目目录如下:
当然,我们如果在勾选DLL的同时,勾选导出符号,那么系统会自动创建一个对应dllTest.cpp的dllTest.h,这样更方便,所以还是勾选下到处符号。
遇到新建的.cpp文件使用方法出现“不允许 dllimport 函数”时,记得在工程属性里的预定义宏添加上MYDLL_EXPORTS这种东西。
先帖代码:
//myDll.h #ifdef MYDLL_EXPORTS #define MYDLL_API __declspec(dllexport) #else #define MYDLL_API __declspec(dllimport) #endif #include <iostream> class MYDLL_API myDll{ public: void print(); int test(); }; MYDLL_API int testFunc(void);
//myDll.cpp #include "stdafx.h" //必须要加这个头文件 #include "myDll.h" void myDll::print(){ std::cout << "myDLL test" << std::endl; } int myDll::test(){ return 10; } MYDLL_API int testFunc(void) { return 42; }
然后生成:
正在创建库 F:\C++\MyCpp\Debug\dllTest.lib 和对象 F:\C++\MyCpp\Debug\dllTest.exp 1> dllTest.vcxproj -> F:\C++\MyCpp\Debug\dllTest.dll
成功,然后就可有使用了,但是得先去配置下工作目录,和DLL几乎一样。
只不过在使用的时候,需要额外加上#pragma comment(lib,”dllTest.lib”)这种代码。
//main.cpp //#include <crtdbg.h> #include <iostream> using namespace std; //#include "MyCode/LinearList/ListTest.h" //#include "MyCode/LinearList/LinkTest.h" #pragma comment(lib,"dllTest.lib") //我的dll所对应的lib。 //#include "testLib.h" //#include "dllTest.h" #include "myDll.h" int main(){ myDll mydll; mydll.print(); cout << mydll.test() << endl; cout << testFunc() << endl; return 0; }
打印输出结果如下图:
大功告成!
相关文章推荐
- VS2013下静态链接库(lib)和动态链接库(dll)的生成与使用
- VS2013下 .lib和.dll的生成与使用
- VS2013中修改.dll工程项目的.lib和.dll的输出路径
- vs2010生成和使用.dll,.lib和.exe文件
- VS2013 中生成lib和dll库文件
- vs2013 创建调用链接库 没有生成 “.lib” 问题
- 利用VS生成.lib及.dll文件
- VS2013 中生成lib和dll库文件
- VS2013使用boostregex遭遇无法打开libboost_regex-vc120-mt-sgd-1_62.lib的问题
- VS2013 64位 libjpeg编译使用
- 使用cmake gui 生成cpp-netlib vs2013项目并编译说明
- VS2013 生成dll事,没有lib生成
- vs2013生成lib和dll库文件
- 【Visual Studio】使用 pexports 根据 VS 的 .dll 动态链接库生成 .lib 库文件
- vs2013生成lib
- vs2013中静态库lib文件的生成与使用
- vs2013生成lib
- VS将已有的项目生成lib静态库并使用
- VS2013添加使用lib的方法
- VS2013中为C++程序生成lib和dll文件