我的BCB5到底怎么了,我的程序调用DLL中函数老出错!请高手指点一二!

sunboy 2000-04-23 09:39:00
我用BCB5的DLL WIZARD 建了一个DLL,并声明了可供外部调用的函数:
extern "C" __declspec(dllexport) double myfun(double, bool);
然后,我用了两种方法来调用myfun:
1、在我的应用程序中做声明:
__declspec(dllimport) double myfun(double.bool);
来静态调用myfun,但没有成功。
2、用LoadLibrary(),GetProcAddress(),FreeLibrary()动态调用myfun
也没成功。另外,用pmyfun=GetProcAddress(DLLNAME,"myfun")获得myfun的函数地址
后,我用pmyfun(1.222,true)来调用myfun为什么也报错!

请各位高手指教!非常感谢!
...全文
373 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
TangQiang 2000-06-16
  • 打赏
  • 举报
回复
extern "C" __declspec(dllexport) double myfun(double, bool);
以上你的声明在参数传递中有问题。应按以下写法:
extern "C" __declspec(dllexport) double __stdcall myfun(double, bool);
TangJF 2000-05-03
  • 打赏
  • 举报
回复
在你的函数说明前加上STDAPI试试
江王 2000-05-01
  • 打赏
  • 举报
回复
DLL的输出函数除了可以用__declspec(dllexport)这种按名称的调用方式外,还有另一种方式,即最老式的那种,用export文件,声明如:
exports
myfunc @1
用这种方法,在vb中都可以调用,而前一种方法vb不认。
peasant 2000-04-24
  • 打赏
  • 举报
回复
静态调用时,要在..bpr文件中加入库名
动态调用时,如halfdream所答
halfdream 2000-04-23
  • 打赏
  • 举报
回复
敲错了,(*myfun)(1,222,true) 应为(*pmyfun)(1.222,true)
halfdream 2000-04-23
  • 打赏
  • 举报
回复
这儿有些问题:
1,首先,应该知道C方式调用同C++调用在编译的时候有些不同。
你调用前的声明应当同定义时一致。即加上 extern "C".
编译的时候也要注意把DLL的引入库链接在一起。

2,应该是 (*myfun)(1,222,true)吧?

13,821

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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