dll生成和调用方法网上很多,省略。
1 build之后只生成了dll文件,没有lib文件。
原因和方法:没有对任何的类或者函数定义DLL interface,需要对类或者函数定义DLL interface,定义方法如下:
对于类:
class _declspec(dllexport) classname{}
对于函数:
returntype _declspec(dllexport) functionname {}
类被定义了<span style="color: rgb(42, 42, 42); font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 13px;">DLL interface的情况下,其类的成员函数不能再被定义为<span style="color: rgb(42, 42, 42); font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 13px;">DLL interface,否则会出现以下错误:</span></span>
<span style="color: rgb(42, 42, 42); font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 13px;"><span style="color: rgb(42, 42, 42); font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 13px;">C2487<span style="white-space:pre"> </span>'functionname': member of dll interface class may not be declared with dll interface</span></span>
参考链接:
http://www.cnblogs.com/whiteyun/archive/2011/07/22/2113668.html
https://msdn.microsoft.com/en-us/library/t72ahzw1.aspx
2. dll文件找不到
直接用 HMODULE hMod = LoadLibrary("Tracker.dll"); 这句话的话会产生以下错误:
Error (active) argument of type "const char *" is incompatible with parameter of type "LPCWSTR"
我用了 HMODULE hMod = LoadLibrary((LPCWSTR)"Tracker.dll");来解决,所以build能通过,但是找不到dll文件!
之后用了 HMODULE hMod = LoadLibrary(TEXT("Tracker.dll")); build通过了,并且也能找到dll文件。
有一点还不能理解的是dll的搜索方法,因为Tracker.dll放在project下边的x64/Debug文件夹和代码的文件夹都能找到,放在其他位置则找不到!