CBuilder怎样调用VC编写的DLL,怎么一编译就出错?

silven 2005-03-10 12:16:29
RT
...全文
219 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssyqcwj 2005-05-16
  • 打赏
  • 举报
回复
在C++Builder中使用DLL


再来我要告诉你如何使用动态链结函式库。我们以前面所产生的DLL为例。使用DLL有两种方式,分别为明确呼叫及不明确呼叫。


我先说明不明确呼叫的使用方式。不明确呼叫指的是,在程式中并没有一行程式是用来载入DLL,而是利用链结一个记载输入函式的函式库档案(LIB),来进行链结,如此系统会自动将该DLL载入,同时在使用完毕後将其释放,不必由使用者(也就是呼叫它的函式)来进行载入及释放的动作。


首先必须产生一个LIB档,你可以利用C++Builder程式目录内的IMPLIB.EXE来产生该档案,切忌勿使用Visual C++ 的IMPLIB.EXE,因为Microsoft所使用的格式是COFF格式的LIB档,而Borland所使用的格式是OMF格式的LIB档。(同样地,若是你的LIB档是要给Visual C++ 链结用的,那就要使用它所附的IMPLIB.EXE,在使用时不可不察)。因此我们可用以下指令产生DLLSAMP.LIB档。


IMPLIB DLLSAMP.LIB DLLSAMP.DLL


如此你就可以得到供程式链结用DLLSAMP.LIB档了。


接着我们来撰写使用该DLL的范例程式。这个程式相当简单,我只在表格中放置一个Button,然後撰写该Button的OnClick事件处理函式,使其呼叫ShowImage函式即可。


有一点要注意的是,你必须将先前产生的DLLSAMP.LIB加入此专案中,利用【Project/Add to Project】选择LIB型态档案,即可将其加入。


最後我们就可以链结程式.
F117p 2005-05-15
  • 打赏
  • 举报
回复
试下用关键字: __declspec(dllimport)来修饰输入模块
qrlvls 2005-05-15
  • 打赏
  • 举报
回复
VC编写的DLL有几种类型,关键在于调用约定是否一致
_stdcall/_cdcel?
flowercity 2005-05-15
  • 打赏
  • 举报
回复
implib your.lib vc.dll
然后在工程中引入这个lib,静态调用
classfree 2005-05-15
  • 打赏
  • 举报
回复
动态调用...
xili 2005-05-12
  • 打赏
  • 举报
回复
不爽,没有分数
xili 2005-05-12
  • 打赏
  • 举报
回复
用implib 对准你的 dll 做一下,会生成一个.lib
liskman 2005-05-02
  • 打赏
  • 举报
回复
VC的LIB和BCB的LIB文件格式不一样,互用的时候要转换一下。
___NULL 2005-03-13
  • 打赏
  • 举报
回复
VC的DLL我导出LIB文件在BC内静态调用没有遇到任何问题
反方法我也试过----可行,BC/VC 的 DLL 相互调用经实际测试未出现问题

你的问题应该更具体些

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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