相信很多朋友都想使用DLL来编写程序,但是总是遇到很多问题,我这里就DLL的编写和使用写个文章
编写一个DLL:
VS新建一个WIN32控制台程序(选DLL、空项目)
建立头文件MyLib.h
<span style="font-size:12px;">#ifdef MYLIBAPI #else #define MYLIBAPI extern "C" __declspec(dllimport) #endif MYLIBAPI int g_nResult; MYLIBAPI int Add(int nLeft, int nRight); </span>代码说明:最重要的定义MYLIBAPI,在即将导入的变量和函数前加上这句明显是是DLL的导入函数或者变量。
建立源文件MyLib.cpp
<span style="font-size:12px;">#include "windows.h" #define MYLIBAPI extern "C" __declspec(dllexport) #include "MyLib.h" int g_nResult; int Add(int nLeft, int nRight) { g_nResult = nLeft + nRight; return g_nResult; }</span>代码说明:函数的定义,此时点击生成解决方案,即可生成一个DLL
调用DLL
新建一个空的工程,引用MyLib.h头文件,添加“之前生成的Lib文件”
编写源文件:
<span style="font-size:12px;">#include "windows.h" #include "strsafe.h" #include "stdlib.h" #include "MyLib.h" int main() { LoadLibrary("New_DLL.dll"); int nLeft = 10; int nRight = 10; TCHAR sz[100]; StringCchPrintf(sz, _countof(sz), TEXT("%d + %d = %d"), nLeft, nRight, Add(nLeft, nRight)); MessageBox(NULL, sz, TEXT("Calculation"), MB_OK); StringCchPrintf(sz, _countof(sz), TEXT("The result of dll is: %d"), g_nResult); MessageBox(NULL, sz, TEXT("Last Result"), MB_OK); return 0; } </span>
这部就已经将DLL调用起来了。
如果想以后想使用这个EXE,将DLL和EXE放在同一个文件夹中,以达到调用成功,否则会显示错误!