C++ Builder中如何调用VC++编写的.dll?

crycoming 2001-09-12 10:34:03
我在project>Import Type Library中引用,可是出现“加载动态连接库是出现错误”
帮助中提到LoadLibrary,GetProcAddress但是缺少例子,不知道因该在程序的什么地方,怎么使用
请大家帮帮忙!分数可以加
...全文
304 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
crycoming 2001-09-20
  • 打赏
  • 举报
回复
艾,真惨。我用鼠标到处乱点,问题竟然解决了
但是原因还是不知道,先结账,免得失信于各位,谁能告诉我原因,100分送上
crycoming 2001-09-14
  • 打赏
  • 举报
回复
help me!
CyberUFO 2001-09-14
  • 打赏
  • 举报
回复
关注
crycoming 2001-09-13
  • 打赏
  • 举报
回复
我按照了上面的方法做了,别人的程序在别人的机器上运行没有错,但是到了我的上面就出现了如下错误,重新安装了系统(win2000+bcb5)都不行,怎么办呀?
[Linker Error] Unresolved external 'Sysinit::VclInit(bool, bool, int, bool)' referenced from E:\BORLAND\CBUILDER5\LIB\RELEASE\VCLE50.LIB|vclinit

[Linker Error] Unresolved external 'Sysinit::VclExit()' referenced from E:\BORLAND\CBUILDER5\LIB\RELEASE\VCLE50.LIB|vclinit
抬头看路 2001-09-12
  • 打赏
  • 举报
回复
你可以试试,有时也可以
crycoming 2001-09-12
  • 打赏
  • 举报
回复
我做二次增值开发,别人软件只给一个COM的接口,就是上面说的三个文件,
我本来是擅长VB的,现在是被逼上梁山了。以后请各位大哥多照顾一下。这儿加分就出错,
我会另找地方谢各位.
crycoming 2001-09-12
  • 打赏
  • 举报
回复
VC++自己生成的.h不行是吗?
superjj2002 2001-09-12
  • 打赏
  • 举报
回复
implib不一定好用,如果有c的源文件,最好是用c++ builder将其编译成一个*.lib,再用。
抬头看路 2001-09-12
  • 打赏
  • 举报
回复
对不起,刚才发错了。
我相信你应该有.H就算没有你既然知道函数的定义就可以自己写一个。
举例说明:
设dll叫aaa.dll

implib aaa aaa.dll
应该在当前目录中生成一个叫aaa.lib的文件
在你的工程中把aaa.lib加入。
在需要使用DLL中函数的文件头加入
#include "aaa.h"
然后就可以直接调用DLL中的函数了。
crycoming 2001-09-12
  • 打赏
  • 举报
回复
加分!
crycoming 2001-09-12
  • 打赏
  • 举报
回复
详细点好吗?我是初学者呀 
你的回答让我在云里雾里一般
抬头看路 2001-09-12
  • 打赏
  • 举报
回复
TChar
crycoming 2001-09-12
  • 打赏
  • 举报
回复
有三个文件: .h,.dll,.lib 如何用?
crycoming 2001-09-12
  • 打赏
  • 举报
回复
whyjld(白痴):详细点好吗?我是初学者呀 
抬头看路 2001-09-12
  • 打赏
  • 举报
回复
有没有头文件,可以用implib作一个LIB,通过头文件直接用里面的函数
peng_yw 2001-09-12
  • 打赏
  • 举报
回复
以上错误是BCB中不能使用VC++ 中生成的LIB 文件,它们格式不一样分别是omf和coff.你必须转换或自己生成一个,可用命令implib xxx.lib xxx.dll 生成LIB文件.
.h文件可能有用,也可能会出现问题,但稍作改动就可以,或自己重写一个
只不过,只有保证VC写的DLL中输出函数的声明为标准C调用才能保证调用成功.
如这样写,一般可以在bcb中用
extern "C" __declspec(dllexport) void __stdcall Func(...);
.def文件中
EXPORTS
Func
输出声明则 extern "C" __declspec(dllimport) void __stdcall Func(...);
如果以LoadLibrary,GetProcAddress动态装入不需要lib文件.
以下是例子:
void (*Func)(void);
HINSTANCE hInst;
hInst = LoadLibrary("你的DLL文件.DLL");
(FARPROC &)Func=GetProcAddress(hInst,"要调的函数");
Func();
FreeLibrary(hInst);

crycoming 2001-09-12
  • 打赏
  • 举报
回复
我的头文件出错:
[Linker Error] 'D:\DD\TESTDL\DEBUG\TESTDL.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
怎么办?

13,873

社区成员

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

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