永发信息网

VC 中如何使用 BCB 编译的库文件

答案:1  悬赏:20  手机版
解决时间 2021-03-20 10:04
VC 中如何使用 BCB 编译的库文件
最佳答案
在 Visual C++ 或者 Visual Studio 中, 是无法直接使用 BCB 工程编译产生的库文件的. 究其原因, 是由于微软 Visual C++ lib 文件格式与 BCB 工程的 lib 文件格式不同所导致. Lib 文件中存放的是动态链接库的接口信息, 而不会含有任何函数的内部实现细节. 因此, 我们可以直接通过 Dll 文件来反向生成特定格式的 lib 文件, 以便在 VC 和 BCB 中交叉使用各个编译的动态链接库.
以 MTK 平台的多路下载工具 SP_MDT 为例, 演示在 VC++ 中直接使用 BCB 编译的 lib 库的问题及解决方案. 我们以 Eboot 为例, 源代码目录下关于 Eboot 的文件有以下几个:
Eboot 头文件定义, 路径: SP_MDT_SRCEboot
Eboot lib 库文件, 路径: SP_MDT_SRCLib
Eboot 动态链接库文件, 路径: SP_MDT_SRCoutput
我们新建一个 VC++ MFC 工程, 将上述文件全部拷贝到 MFC 工程目录下, 同时在对话框中实现如下代码段:
#include "interface.h"ANDROID_DL_HANDLE_T handle;
Android_DL_Create(&handle);

此时, 编译工程会报出如下错误:
error LNK2019: 无法解析的外部符号 _Android_DL_Create@4
该符号在函数 "public: void __thiscall CLibDemoDlg::OnBnClickedOk(void)" 中被引用

原因在于我们仅仅包含了相应函数的头文件, 而并没有导入任何的函数实现(如 cpp 源文件或者 lib 库文件). 接下来, 我们尝试直接在 VC++ 中使用 BCB 编译生成的 lib 库文件, 加入以下代码:
#pragma comment(lib, "eboot.lib")

编译时报出如下错误:
eboot.lib : warning LNK4003: 无效的库格式; 已忽略库

显然, VC++ 并不能正确的识别 BCB 所生成的 lib 库文件. 那么如何解决这个问题呢? 一般来说有两种方法:
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
吃玛卡片对长跑运动有帮助吗?
计算20以内的退位减法时,什么方法最简便
滴血莲花怎么剥开啊? 30分
给刚从牢里出来的人应该说什么客气话
太极拳六大门派流传最广的是哪两派?
沟通100能办理电信号码空号吗?
藕粉是遇热水就膨胀的好还是需要加热的好?
四年级上册反义词大全
webshell有什么作用?
2017年 春节联欢晚会 潘长江和蔡明的小品《老
岫岩格兰西点绿野仙踪和蜗牛咖啡上岛咖啡哪个
每天轻松跑6公里,能跑全马吗
邵房评估地址在什么地方,想过去办事
要约要符合要约邀请的条件吗
我把租的房子给朋友住有错吗
推荐资讯
金源科技地址在哪,我要去那里办事
为什么我的同学买的三百多的智能手机就有4G的
我已考了三轮车驾驶证现在想考C1驾驶证需要先
感觉现在哪家眼镜店都说自家有防蓝光眼镜,谁
可妮雅舒敏去红血丝套装正品抗过敏修复敏感肌
科技蜘蛛流和蜘蛛流有什么区别 要怎么开局
SiO2是酸性氧化物吗为什么
6乘6减6除6加括号等于30
沧州公租房什么时候发
goblin sword这个游戏lost city 12和15关宝箱
鑫盛五金交电经营部地址有知道的么?有点事想
一套房子50W。手上有150W。是全额付款买3套
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?