BCB 调用VC++ dll的问题

spade24 2011-09-07 02:32:30
初次使用BCB,按照网络上丰富的资源,采用静态调用的方式,如下:

dll名:Mydll.dll
dll内函数:void Myfunc()

1、使用implib得到Mydll.lib
2、使用impdef得到Mydll.def
3、h文件中加入引用:extern "C" __declspec(dllimport) _stdcall void Myfunc();
4、Button1Click事件中如下使用:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Myfunc();
}


报错:
[Linker Error] Unresolved external 'Myfunc' referenced from D:\我的文档\桌面\BORLAND C++\UNIT1.OBJ


除了报错,还有对dll中其它函数的警告,如下:
[Linker Warning] Attempt to export non-public symbol 'Myfunc2'
[Linker Warning] Attempt to export non-public symbol 'Myfunc3'

……


...全文
84 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
七擒关羽 2011-09-07
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090302/17/99d1fbc5-4be6-4744-96d9-09b16c0d93c3.html?22568

上面介绍的很清楚,无法连接你去CBC推荐精华看下就有
zzbinfo 2011-09-07
  • 打赏
  • 举报
回复
这样操作就行了[Quote=引用 4 楼 spade24 的回复:]
引用 3 楼 zzbinfo 的回复:
光放到下面不行呀,还得告诉编译器链接进取


在菜单栏project中add把两个文件添加进去,其它地方还需要加载?
[/Quote]
vrace 2011-09-07
  • 打赏
  • 举报
回复
DLL中是否是 stdcall ?
还有编译出来的 dll 里面的函数是否被改名了?

这个看着像是编译出来的函数被改名了
spade24 2011-09-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zzbinfo 的回复:]
光放到下面不行呀,还得告诉编译器链接进取
[/Quote]

在菜单栏project中add把两个文件添加进去,其它地方还需要加载?
zzbinfo 2011-09-07
  • 打赏
  • 举报
回复
光放到下面不行呀,还得告诉编译器链接进取
spade24 2011-09-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zzbinfo 的回复:]
把你生成的lib文件添加到工程中或者

C/C++ code
#pragma link "你的文件.lib"
[/Quote]

lib和def两个文件都放到工程目录下了的。
zzbinfo 2011-09-07
  • 打赏
  • 举报
回复
把你生成的lib文件添加到工程中或者
#pragma link "你的文件.lib"

13,825

社区成员

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

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