BCB调用VB DLL部份函数无效,求解.
本人BCB调用VB写的DLL,调试出现如下问题请大侠帮忙:
Project XXX.exe raised exception class EAcessviolation with message 'access violatong at address 00381FA19 in module 'JST320R.DLL',read of address 000000001. Process is stoped.
1.有在工程文件中加入LIB文件.
2.有在.H文件中声明函数原形.
extern "C" __declspec(dllimport) int __stdcall OpenPort(int);
extern "C" __declspec(dllimport) int __stdcall ClosePort(int);
extern "C" __declspec(dllimport) AnsiString __stdcall ReceDataR(int,AnsiString,AnsiString,AnsiString);
3.OpenPort,ClosePort两个函数没有问题,但ReceDatar函数会出现如上错误画面.
[解决办法]
ReceDataR(int,AnsiString,AnsiString,AnsiString);
这里面的数据类型VB与bcb不同
比如int
bcb里int是 VB里的long
AnsiString,你用char×类型参数试一下
[解决办法]
既然是VB写的Dll, 用AnsiString这个类型做参数肯定要出问题. 如果ReceDataR函数原型是string参数的话,在C++Builder中用char *即可.