在dll中定义一个函数:
int getAll(int& iTime,char* str)
{
改变了iTime的值和str的内容
}delphi中:
function getAll(var iTime:Integer;str:PChar):Integer;stdcall;external 'mydll.dll'
为什么我调用之后,只有iTime可以取到改变后的值,而str不行?
我试过定义为 var str:PChar也不行。
int getAll(int& iTime,char* str)
{
改变了iTime的值和str的内容
}delphi中:
function getAll(var iTime:Integer;str:PChar):Integer;stdcall;external 'mydll.dll'
为什么我调用之后,只有iTime可以取到改变后的值,而str不行?
我试过定义为 var str:PChar也不行。
解决方案 »
- 将当前屏幕截图通过http发送到 服务器上,服务器上只有asp和access
- 有谁用过FireWork烟火控件吗?
- 關於 Tquery,高手指點,謝謝,在線等待!
- 怎样实现在stringgrid双击删除某一行
- 我正翻译DOA使用手册,不知各位觉得有必要吗?
- selected collating sequence not supported by the operating system//出现这个错误是怎么回事
- xp中报表打印的问题,再线等待!!
- delphi 如何禁止应用访问网络
- 写了组件,不知有没用,各位看看.(TSocketConnectionEx for D6)
- 关于三层结构中多个数据集更新的问题
- VC++写的DLL, 给了一个VB的例程, 转成 Delphi 代码总是出错
- treeview的问题.
1.由于C的缺省调用方式为cdecl的,如果原C函数没有特别的申明,改stdcall为cdecl试试
2.估计str要在你的程序中申请内存,先用GetMem试试(除非你调入的是array[0..xxx] of char)
我试了一下:
,改stdcall为cdecl后效果没有改变。我是在dll中给str分配内存的,这样行不行?
在delphi中我只用一个PChar变量传进去
__declspec(dllexport) int ...在delphi中。
var
p: PChar;
i: Integer;
...
getAll(i,p);
如果要在DLL中申请内存,你就要传二维指针或指针引用:
int getAll(int& iTime,char* &str)
或
int getAll(int& iTime,char* *str)
在D中要用var str:PChar