您的位置:首页 > 其它

VS开发环境下生成和调用dll出现的问题和解决方法-1

2016-09-18 21:41 836 查看
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文件夹和代码的文件夹都能找到,放在其他位置则找不到!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐