VS开发环境下生成和调用dll出现的问题和解决方法-1
2016-09-18 21:41
836 查看
dll生成和调用方法网上很多,省略。
interface,定义方法如下:
对于类:
class _declspec(dllexport) classname{}对于函数:
returntype _declspec(dllexport)
functionname {}
参考链接:
http://www.cnblogs.com/whiteyun/archive/2011/07/22/2113668.html https://msdn.microsoft.com/en-us/library/t72ahzw1.aspx
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文件夹和代码的文件夹都能找到,放在其他位置则找不到!
1 build之后只生成了dll文件,没有lib文件。
原因和方法:没有对任何的类或者函数定义DLL interface,需要对类或者函数定义DLLinterface,定义方法如下:
对于类:
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文件夹和代码的文件夹都能找到,放在其他位置则找不到!
相关文章推荐
- 【WinCE】WinCE程序开发中出现“无法找到PInvoke DLL"Kernel32.dll"”问题的一种解决方法
- 1.1 linux下mpi开发环境搭建流程及过程中出现的一些问题解决方法。
- 最近在ArcGIS Engine开发中关于调用gp工具过程出现COM 组件的调用返回了错误 HRESULT E_FAIL 错误的解决方法 和 学习oracle中遇到的一些问题总结
- java用jni调用dll动态库出现Can't find dependent libraries问题的解决方法
- VS2013环境生成和调用DLL动态链接库(第一种方法)
- 解决“ .dll(或.ocx)控件已加载,但对DllregisterServer的调用失败,错误代码为0x80004005”问题的两种终极方法:SubInACL安装 VS 命令提示符
- Android开发中调用系统相册上传图片到服务器OPPO等部分手机上出现短暂的显示桌面问题的解决方法
- 解决VS 2010/2012 C++ 生成的exe在非编译环境电脑中缺失dll的方法
- 对于解决一些VS 2010/2012 C++ 生成的exe在非编译环境电脑中缺失dll的方法
- 在EXE程序中调用DLL文件后出现_CrtIsValidHeapPointer(pUserData)问题的解决方法
- vs2008 debugger 不能调试脚本 解决方法 (vs 开发环境里调试脚本)
- VS2005调用MS Speech API 5.1 sphelper.h出现的问题及解决方法
- 关于Powerbuilder调用VC的dll出现的一个问题及解决办法
- .net中调用autoit的DLL出现乱码解决方法
- 在非VS环境下C++ Builder,Delphi,VC,VB等调用C#开发的DLL的完整方法
- 开发新浪微博应用出现以下问题Fatal error:Call to undefined function curl_init() in错误的解决方法
- Flex4 + FluorineFx配置开发环境时遇到的问题及解决方法
- PHP环境配置中遇到的各种问题解决方法: Cannot load php5apache2_2.dll into server
- Qt + SQLite3 + VS 开发时出现乱码的解决方法
- 开发环境下调试没有问题,发布后运行却提示无法更新数据库 *.MDF,因为数据库是只读的解决方法