vs创建和调用dll和lib经验
2014-05-04 15:47
232 查看
学习了一下,中间还是有不少细节要注意,特此记录
一:生成DLL
1:创建DLL工程
文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也可以)
填写项目名称MyDLL->确定->下一步->DLL(附加选项 对空项目打钩)->完成。
到这里DLL工程就创建完毕了,下面新建两个文件MyDLL.cpp和MyDLL.h。
MyDLL.cpp内容如下:
#include
using namespace std;
#include "MyDLL.h"
int Add(int &a,int &b)
{
return a+b;
}
MyDLL.h内容如下:
#pragma once
extern "C" __declspec(dllexport) int Add(int &a,int &b);
点击生成,则dll文件就生成了,vs2008不能直接生成lib文件,这个时候就需要我们在建立dll工程的时候 再新建一个def文件,默认生成然后重新生成就能够得到lib文件了,但可以通过修改工程属性里面的general->project default->configure type修改为lib,就可以生成lib文件。
注意:如果在已存在的工程上创建dll或者lib,不需要修改工程,只要把工程属性里面的general->project default->configure type修改为lib或者dll,就可以生成lib文件或者dll文件了
二:调用DLL
新建两个文件testMyDLL.cpp和testMyDLL.h
testMyDLL.cpp内容如下:
#include "testMyDLL.h"
#pragma comment(lib,"..\\debug\\MyDLL.lib")
#include
using namespace std;
int main()
{
int a =3;
int b =2;
cout<<Add(a,b)<<endl;
getchar();
}
testMyDLL.h内容如下:
#pragma once
extern "C" _declspec(dllexport) int Add(int &a,int &b);
这里需要注意testMyDLL.cpp文件中调用lib的这句话:
#pragma comment(lib,"..\\debug\\MyDLL.lib")
这里需要指明lib所在的文件夹,当然我们也可以在生成dll的MyDLL工程中,指定lib和dll文件的输出路径,直接到testMyDLL工程下。
上例中的testMyDLL.h也可以使原来创建的时候那个头文件,由此供外部调用
注意:如果只有dll文件,那么必须在程序里面调用LoadLibrary()函数才能使用,如果有lib文件,那么有两种方式可以马上进行调用:
(1). Dependencies (推荐使用,要求有lib源代码)
一个项目被分成多个工程来做,一个主工程exe,其他为静态库lib
Project-->dependencies,设置主工程的依赖为其他静态库lib
这时,主工程的Resource Files中自动添加了lib
在主工程中需要用到其他库的位置加入库的头文件
(2). 直接将lib添加到需要用的工程中(不太推荐,lib没能统一管理)
提供了lib和其头文件
选择工程-->右键-->Add Files to Project
这时,主工程的Resource Files中自动添加了lib
在主工程中需要用到其他库的位置加入库的头文件
(3). 通过工程的Link设置(推荐,lib可以统一管理)
提供了lib和其头文件
Project-->settings-->Link,选择Categery中的Input
在object/library modules里输入的动态链接库对应的.lib文件名
在Additional library path中输入动态链接库对应的.lib的路径
在主工程中需要用到其他库的位置加入库的头文件
(4). #pragma (lib, "filename.lilb")(不太推荐,lib没能统一管理)
提供了lib和其头文件
在主工程中需要用到其他库的位置加入#pragma (lib, "filename.lilb")
在主工程中需要用到其他库的位置加入库的头文件
一:生成DLL
1:创建DLL工程
文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也可以)
填写项目名称MyDLL->确定->下一步->DLL(附加选项 对空项目打钩)->完成。
到这里DLL工程就创建完毕了,下面新建两个文件MyDLL.cpp和MyDLL.h。
MyDLL.cpp内容如下:
#include
using namespace std;
#include "MyDLL.h"
int Add(int &a,int &b)
{
return a+b;
}
MyDLL.h内容如下:
#pragma once
extern "C" __declspec(dllexport) int Add(int &a,int &b);
点击生成,则dll文件就生成了,vs2008不能直接生成lib文件,这个时候就需要我们在建立dll工程的时候 再新建一个def文件,默认生成然后重新生成就能够得到lib文件了,但可以通过修改工程属性里面的general->project default->configure type修改为lib,就可以生成lib文件。
注意:如果在已存在的工程上创建dll或者lib,不需要修改工程,只要把工程属性里面的general->project default->configure type修改为lib或者dll,就可以生成lib文件或者dll文件了
二:调用DLL
新建两个文件testMyDLL.cpp和testMyDLL.h
testMyDLL.cpp内容如下:
#include "testMyDLL.h"
#pragma comment(lib,"..\\debug\\MyDLL.lib")
#include
using namespace std;
int main()
{
int a =3;
int b =2;
cout<<Add(a,b)<<endl;
getchar();
}
testMyDLL.h内容如下:
#pragma once
extern "C" _declspec(dllexport) int Add(int &a,int &b);
这里需要注意testMyDLL.cpp文件中调用lib的这句话:
#pragma comment(lib,"..\\debug\\MyDLL.lib")
这里需要指明lib所在的文件夹,当然我们也可以在生成dll的MyDLL工程中,指定lib和dll文件的输出路径,直接到testMyDLL工程下。
上例中的testMyDLL.h也可以使原来创建的时候那个头文件,由此供外部调用
注意:如果只有dll文件,那么必须在程序里面调用LoadLibrary()函数才能使用,如果有lib文件,那么有两种方式可以马上进行调用:
(1). Dependencies (推荐使用,要求有lib源代码)
一个项目被分成多个工程来做,一个主工程exe,其他为静态库lib
Project-->dependencies,设置主工程的依赖为其他静态库lib
这时,主工程的Resource Files中自动添加了lib
在主工程中需要用到其他库的位置加入库的头文件
(2). 直接将lib添加到需要用的工程中(不太推荐,lib没能统一管理)
提供了lib和其头文件
选择工程-->右键-->Add Files to Project
这时,主工程的Resource Files中自动添加了lib
在主工程中需要用到其他库的位置加入库的头文件
(3). 通过工程的Link设置(推荐,lib可以统一管理)
提供了lib和其头文件
Project-->settings-->Link,选择Categery中的Input
在object/library modules里输入的动态链接库对应的.lib文件名
在Additional library path中输入动态链接库对应的.lib的路径
在主工程中需要用到其他库的位置加入库的头文件
(4). #pragma (lib, "filename.lilb")(不太推荐,lib没能统一管理)
提供了lib和其头文件
在主工程中需要用到其他库的位置加入#pragma (lib, "filename.lilb")
在主工程中需要用到其他库的位置加入库的头文件
相关文章推荐
- vs创建和调用dll和lib
- VS2008中LIB和DLL的创建及调用
- VS 2015 DLL的创建、静态调用和动态调用
- C/C++/C#问题记录(一)VS2012编译调用dll项目找不到lib的workaround
- C++在VS下创建、调用dll
- windows 10(64位)下实现vs20120C++调用matlab r2014a编写的m文件生成的.dll,.lib,.h文件
- vs下创建并调用DLL--简单例子
- 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试
- 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试
- 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试
- vs 2008调用lib 和 dll
- DLL模块:C++在VS下创建、调用dll
- VS2008中LIB和DLL的创建及调用
- Windows静态库和动态库的创建和使用 (lib vs dll)
- 在VS2015中用C++创建DLL并用C++调用且同一时候实现对DLL的调试
- 在VS2015中用C++创建DLL并用C++调用且同时实现对DLL的调试
- VS2015 创建DLL和调用DLL
- VS_2005_创建DLL工程,并进行调用与调试例子
- 在VS2015中用C++创建DLL并用C++调用且同时实现对DLL的调试
- VS创建dll和调用dll