files\vs2008\common7\ide\devenv.exe"这个是我的,你的我不知道在那个盘,不过路径基渗悉缓本上都是的!你自己找一下!
你没陆嫌改过的话就是在c盘!
1:创建DLL工程
文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也可以)
填写项目名称MyDLL->确定->下一步->DLL(附加选项 对空项目打钩)->完成。
到这里DLL工程就创建完毕了,下面新建两个文件MyDLL.cpp和MyDLL.h。
MyDLL.cpp内容如下:
1 #include
2 using namespace std
3 #include "MyDLL.h"
4
5 int Add(int &a,int &b)
6 {
7 纳脊 return a+b
8 }
MyDLL.h内容如下:
1 #pragma once
2
3 extern "C" __declspec(dllexport) int Add(int &a,int &b)
点击生成Bulid -->Bulid MyDLL,dll文件就生成了,vs2008不能直接生成lib文件,这个时候就需要我们在建立dll工程的时候 再新建一个def文件,默认生成然后重新生成就能够得到lib文件了,但可以通过修改工程属性里面的general->project default->configure type修改为lib,就可以生成lib文件。
注意:如果在已存在的工程上创建dll或者lib,不需要修改工程,只要把工程属性里面的general->project default->configure type修改为lib或者dll,就可以生成lib文件或者dll文件了
在C++程序中使用刚才生成的DLL文件步骤:
新建一个win32 控制台工程,取名testMyDLL,新建两个文件:testMyDLL.cpp和testMyDLL.h,
首先需要 隐式链接采用静态加载的方式,比较简单,需要.h、.lib、.dll三件套。新建“控制台应用程序”或“空项目”。配置如下:(这一点非常重要)
项目->属性->配置属性->VC++ 目录-> 在“包含目录”里添加头文件MyDLL.h所在的目录
项目->属性->配置属性->VC++ 目录-> 在“库目录”里添加头文件MyDLL.lib所在的目录
项目->属性->配置属性->链接器->输入-> 在“附加依赖项”里添加“MyDLL.lib”(若有多个 lib 则以空格隔开)
testMyDLL.cpp内容如下:
#include "testMyDLL.h"
#pragma comment(lib,"..\\debug\\MyDLL.lib")//可以写成绝对路径,但是路径一定要用\\来指明,即:J:\\Pr//ograms\\C++\\Practice\\DLLTEST\\DLLtest\\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)
现洞姿渗在可以编译通过了,但是程序运行就报错,还需要将MyDLL.dll复制到当前项目生成的可执行文件所在的目册没录。(这一点非常重要)
这里需要注意testMyDLL.cpp文件中调用lib的这句话:
#pragma comment(lib,"..\\debug\\MyDLL.lib")
这里需要指明lib所在的文件夹,当然我们也可以在生成dll的MyDLL工程中,指定lib和dll文件的输出路径,直接到testMyDLL工程下。
注意:如果只有dll文件,那么必须在程序里面调用LoadLibrary()函数才能使用,如果有lib文件,那么有两种方式可以马上进行调用
引用分三种,如果管理的好,项目就十分的清楚以下是三种方案
1.[优先级低]系统引用.如system.text这些是系统自动建好的,在配置文件下,你不用管
2.[优先级中]文件引用. *** 作方法是删除你本地程序"引用"中的引用,点增加引用从生成dll的项目中的debug/下的目录中选择dll.然后它就会自动获取dll最新的
3.[优先级高]引用路径. *** 作方法是点击项目属性,从中项目属性中设置引用路径,引用路睁银径从上到下优先级逐次下降
一般来说,如果有全部的源代码,采用方案2,同时清空所有的方案3,一定清空否则有影响.
对于自己只编写部分的源代码,可采用方案3,就是把你所引用到的所有的dll统一放到一个统一的文件夹中 如D:/公共程序集/,然后,在项目属性毕让中增加一下此路悉数宴径.就可以了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)