¥¥¥¥¥一个简单的链接库的使用问题¥¥¥¥¥¥

nutria 2003-11-27 03:03:49
在创建DLL文件的时候,我的导出函数是这样定义的

#define DLLExport _declspec(dllexport)
extern "C" DLLExport int HaveGranted(CString yourtext);

然后在VC中使用没有问题,可是当用在VB中时,一运行到调用的这个函数,窗体就自动关闭了.
请高手告知怎么在VB和Delphi中调用dll的导出函数!
谢谢了!
...全文
94 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
nutria 2003-11-28
  • 打赏
  • 举报
回复
到底怎么才能改好??
高手给支个招啊!
yudehui 2003-11-28
  • 打赏
  • 举报
回复
用windows标准的变量类型吧
这样才能传递
lishu2002 2003-11-28
  • 打赏
  • 举报
回复
将vc中int后面的__stdcall去掉
然后在delphi中声明
function HaveGranted(YourText:pchar):integer;cdecl;External'Granted.dll';

经调试已经ok
thomas_cat 2003-11-28
  • 打赏
  • 举报
回复
VC的编译器如果在没有指定.Def文件的情况下将函数名用VC的方法编译,需要在Delphi中使用
function LSI_InitNTDbi: Boolean; cdecl; external 'dbapi.dll' name '?LSI_InitNTDbi@@YA_NXZ';

像这样子的声明凡是才能解决问题。其中name后面的字符串用VC中的工具Depends查看。
nutria 2003-11-28
  • 打赏
  • 举报
回复
我改成如下方式
#define DLLExport _declspec(dllexport)
extern "C" DLLExport int __stdcall HaveGranted(LPSTR yourtext);
生成Granted.dll文件,在VC中调用一切正常

然后在delphi中声明
function HaveGranted(YourText:pchar):integer ;External'DLLExport.dll';

然后在程序中使用
var
text:string;
value:integer;

value:=HaveGranted(pchar(text))

结果编译的时候出现 无法定位程序入口点HaveGranted于Granted.dll上,
请问怎么 解决他呢,是由什么引起的呢???

谢谢!!
lishu2002 2003-11-27
  • 打赏
  • 举报
回复
顶一下啊
nutria 2003-11-27
  • 打赏
  • 举报
回复
谁能讲一下!?
nutria 2003-11-27
  • 打赏
  • 举报
回复
我重新用如下方式定义
#define DLLExport _declspec(dllexport)
extern "C" DLLExport int HaveGranted(LPSTR yourtext);

但是请问在VB和Delphi中怎么调用和传进参数去呢??
谢谢
nutria 2003-11-27
  • 打赏
  • 举报
回复
用LPSTR 或者 char*就可以么?
jn_rice 2003-11-27
  • 打赏
  • 举报
回复
???我什么时候升3三角的?好久没有来了!借楼主贴,吐了一堆!
jn_rice 2003-11-27
  • 打赏
  • 举报
回复
我也同意!
thomas_cat 2003-11-27
  • 打赏
  • 举报
回复
不行,你的参数使用了CString,别的语言没有用样的MFC当然无法使用,使用char *或其他标准的简单参数类型。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧