DLL使用问题????已经问过一次了,不够分再加!

moncat 2003-09-29 10:45:46
人家提供给我一个VC下的编写的DLL、lib及头文件(lib无法在BCB下连接成功),此DLL是导出一个类。
现在要用BCB使用这个DLL,必须用LoadLibrary来引入DLL,通过这个DLL来实例化一个头文件中定义的类对象。

已知条件: DLL,lib(VC下),*.h(类定义)
问题: 我将如何使用通过DLL使用GetProcAddress()来实例化一个对象?
...全文
49 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
pbMaster 2003-09-30
  • 打赏
  • 举报
回复
卸载:
if (hLibHandle)
FreeLibrary(hLibHandle);
pbMaster 2003-09-30
  • 打赏
  • 举报
回复
定义:
long __stdcall (*LoadDRV)();
HANDLE parentHwnd;

初始化:
hLibHandle=LoadLibrary("DLLFILE.dll");
if (hLibHandle)
{
LoadDRV=(long __stdcall (*)())GetProcAddress(hLibHandle,"LoadDRV");


调用:
long i=(*LoadDRV)();
moncat 2003-09-30
  • 打赏
  • 举报
回复
悲哀!虽然没解决,看来我也是该结贴了?
fatwave 2003-09-30
  • 打赏
  • 举报
回复
学习学习
Behard 2003-09-30
  • 打赏
  • 举报
回复
这个问题确实是问过很多次,而且很多人也是提出了一些解决方法
但是我曾试了一个星期,都是没有成功

BCB 调用 VC 的 DLL,我实在是不知道使用导出类的 DLL,别的都是好说
moncat 2003-09-30
  • 打赏
  • 举报
回复
vc下面有IMPLIB这个工具吗?
我就是用bc下的IMPLIB工具生成的lib文件啊,而且还试了加和没加-a的时候的参数,但是就是不能用啊
linker的时候,出现所有成员函数没有实现的错误
[Linker Error!]Unresolved external...
[Linker Error!]Unresolved external...
[Linker Error!]Unresolved external...
[Linker Error!]Unresolved external...
...
moncat 2003-09-30
  • 打赏
  • 举报
回复
vc下面有IMPLIB这个工具吗?
我就是用bc下的IMPLIB工具生成的lib文件啊,而且还试了加和没加-a的时候的参数,但是就是不能用啊
linker的时候,出现所有成员函数没有实现的错误
[Linker Error!]Unresolved external...
[Linker Error!]Unresolved external...
[Linker Error!]Unresolved external...
[Linker Error!]Unresolved external...
...
hongliqiu 2003-09-30
  • 打赏
  • 举报
回复
这种问题,以前有很多人问过的,搜索一下以前的帖子吧。
kingcaiyao 2003-09-30
  • 打赏
  • 举报
回复
iBuilder已经说得很清楚了,出现你所说的链接错误是因为你的LIB文件格式不对,只要用BCB自带的implib来进行转换就可以了。
你有了LIB文件,再加上头文件,可直接将LIB文件加入到你的项目中,然后在你的项目中包含这个头文件,直接采用静态调用就可以了。
iBuilder 2003-09-30
  • 打赏
  • 举报
回复
因为VC的LIB用的是COFF格式的LIB档,而CB用的是OMF格式的LIB,所以你用VC的IMPLIB生成的LIB是不能在CB中用的,试一下用CB自带的INPLIB,在CBuilderX\Bin\下,(X是版本号)
Behard 2003-09-30
  • 打赏
  • 举报
回复
要不你使用 VC 重新封装为导出函数即可
Behard 2003-09-30
  • 打赏
  • 举报
回复
我刚才又试了一次,还是不行
我把我测试的结果告诉你:(自己衡量怎么作吧)

1. 在 VC 中不使用 extern "C" 修饰时导出函数的名字都是以 ?开头的
而在 BCB 的 def 文件中不支持 ?符号的
再说了导出类总不能使用 extern "C" 吧!
这样的话,通过增加 def 文件连接 VC DLL 的方式就不行了

2. 对于 ? 开头的函数名,只能使用动态连接
但是导出类只能是使用静态连接的

3. 你可以通过修改 VC 中的 def 文件来试一试
^_^ 不过我不知道怎么做(很少使用 VC)

4. 提醒一下,VC 中默认是 __cdecl 方式调用的,BCB 是 __stdcall
但是我不知道怎么修改导出类的调用方式

5. 如果是我,就导出函数算了
不过如果是没有 MFC 的话,直接叫对方使用 BCB 编译更简单的
qiuafa 2003-09-30
  • 打赏
  • 举报
回复
up
moncat 2003-09-30
  • 打赏
  • 举报
回复
implib.exe -a *.lib *.dll 生成的lib也无法使用!!为什么?

linker的时候,出现所有成员函数没有实现的错误---[Linker Error!]Unresolved external...
moncat 2003-09-30
  • 打赏
  • 举报
回复
那请问能不能生成一个bc下能用的lib文件?????????如何生成?tlib或tlibimp工具如何生成?
rookieme 2003-09-30
  • 打赏
  • 举报
回复
不能用此lib,就当没有这个lib, VC下的LIB与BCB的lib 不能通用的,只能加载DLL
iBuilder 2003-09-30
  • 打赏
  • 举报
回复
VC下是有这个工具的,你还把源代码粘出来吧,E-MIAL给我,让我试一下吧ibuilder@163.com
CB调用VC的DLL是一定可以的,不过象你所说的是实例化一个类对象就不太清楚
moncat 2003-09-29
  • 打赏
  • 举报
回复
是编译成功,但是Libker出错:
[Linker Error] 'OUTPUT\CMOAPI.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
zihan 2003-09-29
  • 打赏
  • 举报
回复
你可以直接把lib文件加到工程里面去直接引用!!lib无法在BCB下连接成功指的是不能够加进去吗?

1,221

社区成员

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

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