一直很好奇C++的Dll是个什么东西...
最近终于知道了..
1.创建project
选择Win32 Dynamic Link Library,然后 OK, 然后 选择带一个例子的那个 project
2.写一个简单的方法
在project中可以看到已经创建好的4个文件.
dlltest.cpp StdAfx.cpp dlltest.h StdAfx.h
先在dlltest.h 中生命自己要写的方法
然后去dlltest.cpp 中实现之
这样dll就算是写完了,build 一下.
3.使用Dll
去dlltest的文件目录下的debug中,把dlltest.dll 和 dlltest.lib 复制到目标程序中,然后把 dlltest.h 也复制到目标程序中.
在目标程序 testdll.cpp 中
这样build.没有错误..但是运行会提示错误..
在该project的 settings 中 的 link 标签页 中间 那行 Object/Library modules: 中添加dlltest.lib 。
然后build.然后运行..
现在已经可以成功使用dll了.
ps:微软的东西真是麻烦...
最近终于知道了..
1.创建project
选择Win32 Dynamic Link Library,然后 OK, 然后 选择带一个例子的那个 project
2.写一个简单的方法
在project中可以看到已经创建好的4个文件.
dlltest.cpp StdAfx.cpp dlltest.h StdAfx.h
先在dlltest.h 中生命自己要写的方法
#ifdef DLLTEST_EXPORTS
#define DLLTEST_API __declspec(dllexport)
#else
#define DLLTEST_API __declspec(dllimport)
#endif
DLLTEST_API int add(int a,int b);
然后去dlltest.cpp 中实现之
#include "stdafx.h"
#include "dlltest.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
DLLTEST_API int add(int a,int b)
{
return a+b;
}
这样dll就算是写完了,build 一下.
3.使用Dll
去dlltest的文件目录下的debug中,把dlltest.dll 和 dlltest.lib 复制到目标程序中,然后把 dlltest.h 也复制到目标程序中.
在目标程序 testdll.cpp 中
#include "dlltest.h"
#include <stdio.h>
int main(){
int c=add(3,5);
printf("%d\n",c);
return 0;
}
这样build.没有错误..但是运行会提示错误..
在该project的 settings 中 的 link 标签页 中间 那行 Object/Library modules: 中添加dlltest.lib 。
然后build.然后运行..
现在已经可以成功使用dll了.
ps:微软的东西真是麻烦...