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

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文件夹和代码的文件夹都能找到,放在其他位置则找不到!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值