我现在有一个vc的dll,其中输出了一个函数
int getstr(_int64 cust,char *maskstr,char *retstr)retstr是要返回的字符串我在delphi中调用的程序如下:
function getstr(cust:longint;maskstr:pchar;var
retstr :pchar):integer;cdecl;external 'strdll.dll' name 'getstr';我调用的时候没有问题,就是retstr始终不能返回正确的值,我也调试过,发现retstr根本没有被改变,但dll在vc中调用时是没有问题的。那位大侠知道原因,重金酬谢!!!
int getstr(_int64 cust,char *maskstr,char *retstr)retstr是要返回的字符串我在delphi中调用的程序如下:
function getstr(cust:longint;maskstr:pchar;var
retstr :pchar):integer;cdecl;external 'strdll.dll' name 'getstr';我调用的时候没有问题,就是retstr始终不能返回正确的值,我也调试过,发现retstr根本没有被改变,但dll在vc中调用时是没有问题的。那位大侠知道原因,重金酬谢!!!
解决方案 »
- 请问在在什么事件中检测ADODATASET移动到第二条记录中去了?
- 赶快帮个忙啊,我的程序是用的Delphi6+Oracle10G开发,数据库访问用的是Ado,但现在才发现这样的话,客户端也需要安装Oracle的客户端,
- ★☆★☆★保证让您的编程周期至少缩短三分之一!
- 用rave如何做master/detail 報表
- Pooling的问题
- 请教请教!!!!
- 朋友们哪有 ico bmp 图标下载
- 菜鸟求救,怎么让托动Form1时Form2也跟着托动?
- 在Query组件里,怎么表名不能做变量(在线等!!)
- 如何清空类型文件中的数据纪录?
- TTable.Filter能过滤Alphy类型,而不能过滤Longinteger?
- 100分请教这种程序界面是如何开发的。分不够的话另外再给!
retstr :pchar):integer;cdecl;external 'strdll.dll' name 'getstr';
delphi longint 和 integer 都是4个字节; Int64 是8 个字节;maskstr和resstr都是pchar类型;最后注意函数的调用约定就可以了。
extern "C" int __declspec(dllexport) __stdcall getstr(_int64 cust,char *maskstr,char *retstr);然后delphi中这样调用:
function getstr(cust:longint;maskstr:pchar;retstr :pchar):integer;stdcall;external 'strdll.dll';
如果这样还出错,我倒给你分,好吗?
被delphi调用的接口尽量用stdcall的。