VB6.0软件调用VS C++ DLL问题解决
2017-08-14 20:44
344 查看
源起
之前为设备的DLL供客户二次开发,包括C++,C#等调用都没有问题,以一个函数为例,C文件和H文件里写法如下:UCHAR CharToHex(UCHAR ch)
extern "C" __declspec(dllexport) UCHAR CharToHex(UCHAR ch);//字符转16进制
但日前有一个客户还在用VB6.0开发,调用总是出现:实时错误“49”:DLL调用约定错误。
解决问题
在网上查了一些资料,如下三个地方修改才可以。C文件中修改如下:
UCHAR __stdcall CharToHex(UCHAR ch)
H文件里相应修改如下:
extern "C" __declspec(dllexport) UCHAR __stdcall CharToHex(UCHAR ch);//字符转16进制
原因是VB6.0中调用默认是标准的,需要强制转换成“__stdcall”。
DEF文件中需要添加此接口:
; xxxDll.def : 声明 DLL 的模块参数。 LIBRARY EXPORTS ; 此处可以是显式导出 CharToHex
重新生成解决方案,即可。
参考
总结一下DLL函数声明的一些问题:http://blog.csdn.net/wangwenjing90/article/details/9047853/DLL 导出函数 _stdcall 和 _cdecl调用约定:http://blog.csdn.net/hb19820102/article/details/7432694
相关文章推荐
- C++ VS编译问题--VS下生成DLL,但没有生成Lib的解决办法
- asp.net 调用(引用 Native dll 的)C++/CLI dll 的问题及解决
- c++调用matlab dll 出现了无法解决的问题啊啊啊啊啊啊啊!
- C/C++/C#问题记录(一)VS2012编译调用dll项目找不到lib的workaround
- 解决“ .dll(或.ocx)控件已加载,但对DllregisterServer的调用失败,错误代码为0x80004005”问题的两种终极方法:SubInACL安装 VS 命令提示符
- C# 调用 C++ DLL无法调试的问题解决方法
- VS开发环境下生成和调用dll出现的问题和解决方法-1
- 关于在Silverlight中调用C++编写的DLL的问题
- C# 调用 c++ dll 的一些问题总结
- C#调用C++写的dll 函数传递参数问题,请有经验的人详细描述
- C#调用C++版本dll时的类型转换需要注意的问题小结
- C/C++调用Delphi制作的dll时发现的一些问题
- C#调用C++版本dll时的类型转换需要注意的问题小结
- 在c#里调用C++的dll时,需要注意的一些问题
- java 中System.loadLibrary()调用c++Dll的路径问题
- Emgu中无法调用cxcore.dll等的问题解决办法
- 某项目要调用现有的100多个DLL 三 先解决为一个类型做一个跨域的问题
- VC调用Delphi的DLL时遇到的问题及解决
- C#调用C++Dll封装时遇到的一系列问题
- [VB.NET]vb.net 调用vb6.0写的ActiveX dll的问题,各位帮忙啊!