我在调用DLL时为什么会出现这个错
project E:\working\vosiPrompt\speakmanage.exe faulted with message:'access violation at 0x00fd7ac:read of address 0x0025ed00'. Process Stopped.Use Step or Run to continue.
其实dll已经执行完了,但是会弹出上面的错误,然后程序就死掉了,不知哪位大大可以帮我解决
声明
function VS_ttsplay(config_file,text:PChar;canput:integer):integer ;cdecl;//stdcall;
external 'vox.dll' name 'VS_ttsplay';
VC中dll声明
extern "C" _declspec(dllexport) int VS_ttsplay(char *config_file,char *text,int canput)
在调用的过程中,我把cdecl 与 stdcall 这两种方式全用过,不知为什么不行阿,请各位高手帮帮忙
解决方案 »
- delphi7关于一个程序只能托盘一次的代码实现
- html组件
- 求教:如何在一个窗体中将数据库的内容加上表头、画成表格显示,并可以按表格的形式打印?
- 简单的frame 问题
- 想找个图表插件,但不太熟悉,大家给个建议,谢谢了
- 怎样将程序子窗体的标题显示在任务栏里
- 关于TreeView的问题
- delphi 2009中使用DBX时,双击SQLConnection控件怎么不好用啊?哪位大侠熟悉DBX??
- ______在执行完“恢复数据库”的语句后,再执行SQL查询语句___提示“连接失败”
- help me!!!!!!!!!!!!!!!!!!!!!!!!!
- 这堆冒号点的有问题,给看看哪点多了!!!!!!!!!!!!!!!!!
- 《delphi串口通信编程》到哪里能下载电子版本的书籍?
用C写一个测试程序来调用这个DLL函数试一下,问题出在DLL内部也不一定的
把你在调用VS_ttsplay时传入Dll的参数类型改一下,可以声明为Array
最好不要用PChar(String),如果再不行那在函数声明的地方加上var
Try it
注意:是工程文件.dpr中!!
注意:是工程文件.dpr中!!
C代码:
extern "C" __declspec(dllexport) int CCCC(char *AA);int CCCC(char *AA)
{
*AA = 0;
return 101;
}DELPHI代码:
function CCCC(AA: PChar): Integer; stdcall; external 'AAA.dll' name 'CCCC';var
I: Integer;
S1: String;
S2: Array[0..100] of Char;
begin
SetLength(S1, 100);
I := CCCC(PChar(S1)); // 这样调用测出现与楼主一样的问题,如果是S2就OK
ShowMessage(IntToStr(I));
end;不知道楼主的问题解决了没有?
[email protected]