社区
Windows SDK/API
帖子详情
这个c语言的dll如何调用
sgjie
2012-05-27 08:07:22
//读取数据 test.dll
int test(char *buf)
数据结构如下
char c1;
char c2[100];
这个dll如何调用啊。如何声明啊
用了几个方法,要不有的时候一下就退出,要么Dispose的时候提示错误。
...全文
214
11
打赏
收藏
这个c语言的dll如何调用
//读取数据 test.dll int test(char *buf) 数据结构如下 char c1; char c2[100]; 这个dll如何调用啊。如何声明啊 用了几个方法,要不有的时候一下就退出,要么Dispose的时候提示错误。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
老吴子
2012-06-19
打赏
举报
回复
我估计是C语言和Delphi在结构对齐上不同所造成的。
sgjie
2012-05-28
打赏
举报
回复
描述是有些混乱。 int test(char *buf)
中的buf是返回的值,是一个结构体指针
{char c1;
char c2[100];
}
这种情况不知如何处理,
我是这样做的,先定义
Ttest=record
c1 :char;
c2 :array[0..99] of char;
end;
ptest:^Ttest;
然后在delphi中声明
function test(buf :ptest):integer;stdcall; external 'test.dll';
我调用的时候:
var ptest1:ptest;
new(ptest1);
test(ptest1);
showmessage(string(ptest1.c2));
这个是可以取值正确的。
问题是
Dispose(ptest1)的时候,或者程序退出的时候都提示
invalid pointer operation。
还有调用test(ptest1)的不稳定,有的时候程序直接退出。所以不知道原因了,是否必须这样声明,还是有其他的办法?
UnkownState
2012-05-28
打赏
举报
回复
c/c++: int test(char *buf)
delphi: function test(buf: PAnsiChar): Integer; cdecl; external 'test.dll';
这样适应d7(ansi)或者xe(unicode),同时c/c++的普通dll导出api未指定函数参数入栈方式时默认为cdecl,而不是stdcall, 否则参数多就会失败,至于指针所指空间的释放最好要清楚是谁的工作。
「已注销」
2012-05-28
打赏
举报
回复
char *buf 就是个字符指针,怎么硬要说成结构体。描述十分混乱。
sgjie
2012-05-28
打赏
举报
回复
谢各位楼上,char *buf是一个结构体 char c1;
char c2[100];
如果是一个字符串,直接就用pchar就可以了,如果buf是一个结构体怎么弄呢?
我是把buf也定义了这个结构体Ttest,但是 不稳定,有的时候调用函数就退出,有的时候不退出可以取值
,但Dispose的时候每次都提示错误什么的。
kaikai_kk
2012-05-28
打赏
举报
回复
打錯了
k:=te
x
t(c1); =>k:=te
s
t(c1);
kaikai_kk
2012-05-28
打赏
举报
回复
function test(buf :Pchar):integer;stdcall; external 'test.dll';
var
k:integer;
c1:PChar;
begin
c1:=stralloc(1024);
c1:='Hello';
k:=text(c1);
strdispose(c1);
end;
bdmh
2012-05-28
打赏
举报
回复
char c1;
char c2[100];
c1 : char;
c2 : array [0..99] of char
cp1982
2012-05-28
打赏
举报
回复
LZ你自己没搞明白呀,char *buf中的buf只是个形参啊,char *在delpi里面就是pchar
sgjie
2012-05-28
打赏
举报
回复
自己解决了,申请 new(ptest1);
改成getmem(ptest1, SizeOf(ptest));都不行,最后索性 getmem(ptest1, 1024); 结果不提示invalid pointer operation。
错误了。 不知为何?
Oraclers
2012-05-27
打赏
举报
回复
大概是:
function test(buf :Pchar):integer;stdcall; external 'test.dll';
C语言
Dll
编写与
调用
C语言
Dll
编写与
调用
,内含源代码与操作步骤
C语言
调用
DLL
使用
c语言
调用
dll
博文地址http://blog.csdn.net/dengnanyi/article/details/8665379
C#
调用
C语言
DLL
文件示范
C#
调用
C语言
DLL
文件示范 C#
调用
C语言
DLL
文件示范 C#
调用
C语言
DLL
文件示范
C语言
创建
DLL
,并在C中
调用
DLL
C语言
创建
DLL
,并在C中
调用
DLL
的例子,步骤详细,入门的好教程。
C语言
的
DLL
编写与
调用
[归纳].pdf
C语言
的
DLL
编写与
调用
[归纳].pdf
Windows SDK/API
1,183
社区成员
22,335
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章