BCB的动态库怎么在VC下调用

安防天下 2014-07-24 07:41:40
现在在VC2008调用BCB生成的动态库,卡壳,求解
...全文
313 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
缘中人 2014-07-24
  • 打赏
  • 举报
回复
干脆动态调用,没那么多麻烦事情
我不懂电脑 2014-07-24
  • 打赏
  • 举报
回复
http://www.360doc.com/content/11/0713/11/2716732_133272739.shtml
laowang2 2014-07-24
  • 打赏
  • 举报
回复
动态调用。不会有问题。
fang 2014-07-24
  • 打赏
  • 举报
回复
引用 楼主 u010580518 的回复:
现在在VC2008调用BCB生成的动态库,卡壳,求解
是因为BCB生成的LIB库文件不是标准的OMF格式,可以将OMF转成COFF,BCB中记得有一个omf2coff的工具。 第二种方法就是直接在VC中用dumpbin、lib工具将DLL生成.lib文件,还有就是直接loadlibrary.....
ccrun.com 2014-07-24
  • 打赏
  • 举报
回复
不管是通过.DEF文件导出还是通过__declspec导出,VC生成的.lib格式和C++Builder使用的.lib格式是不同的。除非通过动态调用,VC和C++Builder的混用, 如果用引入库的方式链接,C++Builder需要自己的格式才能支持。
安防天下 2014-07-24
  • 打赏
  • 举报
回复
http://blog.csdn.net/liu_shenglun/article/details/4642044,在里面
LIBRARY     xuexi.dll

EXPORTS
    _xuexi_Close                 @1   

    _xuexi_Init                     @2   

 

     接着修改XX.DEF文件是符合VC规则如下

LIBRARY  "XUEXI"

DESCRIPTION  "XUEXI LIBRARY"

EXPORTS

    xuexi_Close@0    @1

    xuexi_Init@0       @2

 

    然后使用VC自带的LIB程序将上一步生成的DEF文件创建一个LIB文件,命令格式为 LIB /DEF:XX.DEF ,执行这条指令后就生成了VC能使用的XX.LIB了。
我和我上面的对比有些不同
安防天下 2014-07-24
  • 打赏
  • 举报
回复
引用 6 楼 xmnathan 的回复:
C++Builder和VC的Dll共用的确是一件麻烦事。下面给你举个例子: C++Builder中,new一个Dll Wizard,不选用VCL,然后添加以下代码(注意导出函数使用的是__cdecl): // 声明: extern "C" __declspec(dllexport) int __cdecl TransExcel(char *sReportFile,char *sSheetName,char *sExcelFile); // 定义: int __cdecl TransExcel(char *sReportFile,char *sSheetName,char *sExcelFile) { MessageBox(0, sReportFile, sSheetName, 0); return 0; } 然后手工建立一个1.def文件,并添加到工程中(Project-->Add to Project): EXPORTS TransExcel = _TransExcel 保存工程,并编译,假设生成Project1.dll。 接下来,需要在控制台下生成两个文件: 运行impdef project1.def project1.dll 生成VC使用的project1.def 运行lib /def:project1.def /machine:i386 生成VC使用的project1.lib 在VC中: // 注意这里的Project1.lib文件路径 #pragma comment (lib,"Project1.lib") extern "C" int __cdecl TransExcel(char *sReportFile,char *sSheetName,char *sExcelFile); 然后就可以调用了: TransExcel("ReportFile", "SheetName", "ExcelFile");
很感谢你的帮助,如果我没有BCB的动态库源码,现在有它的dll,lib,和.h文件,现在按照你的方法,生成的可以编译通过,但是如果调用提示如下: error LNK2019: 无法解析的外部符号 _ks8k_opensocket@8
  • 打赏
  • 举报
回复
C++Builder和VC的Dll共用的确是一件麻烦事。下面给你举个例子: C++Builder中,new一个Dll Wizard,不选用VCL,然后添加以下代码(注意导出函数使用的是__cdecl): // 声明: extern "C" __declspec(dllexport) int __cdecl TransExcel(char *sReportFile,char *sSheetName,char *sExcelFile); // 定义: int __cdecl TransExcel(char *sReportFile,char *sSheetName,char *sExcelFile) { MessageBox(0, sReportFile, sSheetName, 0); return 0; } 然后手工建立一个1.def文件,并添加到工程中(Project-->Add to Project): EXPORTS TransExcel = _TransExcel 保存工程,并编译,假设生成Project1.dll。 接下来,需要在控制台下生成两个文件: 运行impdef project1.def project1.dll 生成VC使用的project1.def 运行lib /def:project1.def /machine:i386 生成VC使用的project1.lib 在VC中: // 注意这里的Project1.lib文件路径 #pragma comment (lib,"Project1.lib") extern "C" int __cdecl TransExcel(char *sReportFile,char *sSheetName,char *sExcelFile); 然后就可以调用了: TransExcel("ReportFile", "SheetName", "ExcelFile");
安防天下 2014-07-24
  • 打赏
  • 举报
回复
你好,现在生成的def,怎么改

LIBRARY     KS8000.DLL

EXPORTS
    CalculateCRC16                 @2   ; CalculateCRC16
    CalculateCRC8                  @1   ; CalculateCRC8
    ___CPPdebugHook                @58  ; ___CPPdebugHook
    bcd                            @3   ; bcd
    ks8k_CloseSocket               @55  ; ks8k_CloseSocket
    ks8k_READ_NEXT_RECORD          @57  ; ks8k_READ_NEXT_RECORD
    ks8k_READ_NOW_RECORD           @28  ; ks8k_READ_NOW_RECORD
    ks8k_add_black                 @40  ; ks8k_add_black
    ks8k_add_register              @37  ; ks8k_add_register
    ks8k_add_register_AddTime      @38  ; ks8k_add_register_AddTime
    ks8k_clear_record              @30  ; ks8k_clear_record
    ks8k_closecom                  @5   ; ks8k_closecom
    ks8k_del_black                 @41  ; ks8k_del_black
    ks8k_del_register              @39  ; ks8k_del_register
    ks8k_disable_real_watch        @33  ; ks8k_disable_real_watch
    ks8k_enable_real_watch         @32  ; ks8k_enable_real_watch
    ks8k_get_alarm                 @42  ; ks8k_get_alarm
    ks8k_get_base_table            @22  ; ks8k_get_base_table
    ks8k_get_cycle                 @14  ; ks8k_get_cycle
    ks8k_get_dev_id                @7   ; ks8k_get_dev_id
    ks8k_get_flash_config          @16  ; ks8k_get_flash_config
    ks8k_get_flashblock            @51  ; ks8k_get_flashblock
    ks8k_get_grp_table             @20  ; ks8k_get_grp_table
    ks8k_get_holiday_table         @24  ; ks8k_get_holiday_table
    ks8k_get_menacepsw             @45  ; ks8k_get_menacepsw
    ks8k_get_recblock              @50  ; ks8k_get_recblock
    ks8k_get_record_sum            @15  ; ks8k_get_record_sum
    ks8k_get_status                @35  ; ks8k_get_status
    ks8k_get_time                  @10  ; ks8k_get_time
    ks8k_get_timer                 @49  ; ks8k_get_timer
    ks8k_get_version               @9   ; ks8k_get_version
    ks8k_get_week_table            @18  ; ks8k_get_week_table
    ks8k_init_dev                  @12  ; ks8k_init_dev
    ks8k_open_com                  @4   ; ks8k_open_com
    ks8k_opensocket                @6   ; ks8k_opensocket
    ks8k_read_curent_record        @27  ; ks8k_read_curent_record
    ks8k_read_next_record          @29  ; ks8k_read_next_record
    ks8k_read_real_data            @34  ; ks8k_read_real_data
    ks8k_read_slavedevID           @56  ; ks8k_read_slavedevID
    ks8k_read_start                @25  ; ks8k_read_start
    ks8k_read_stop                 @26  ; ks8k_read_stop
    ks8k_record_cycle              @13  ; ks8k_record_cycle
    ks8k_reg_slavedevID            @54  ; ks8k_reg_slavedevID
    ks8k_remote_close              @53  ; ks8k_remote_close
    ks8k_remote_open               @52  ; ks8k_remote_open
    ks8k_resume_record             @31  ; ks8k_resume_record
    ks8k_set_alarm                 @43  ; ks8k_set_alarm
    ks8k_set_base_table            @21  ; ks8k_set_base_table
    ks8k_set_dev_id                @8   ; ks8k_set_dev_id
    ks8k_set_grp_table             @19  ; ks8k_set_grp_table
    ks8k_set_holiday_table         @23  ; ks8k_set_holiday_table
    ks8k_set_menacepsw             @44  ; ks8k_set_menacepsw
    ks8k_set_sector                @36  ; ks8k_set_sector
    ks8k_set_time                  @11  ; ks8k_set_time
    ks8k_set_timer                 @48  ; ks8k_set_timer
    ks8k_set_week_table            @17  ; ks8k_set_week_table
    ks8k_shutoff_alarm             @47  ; ks8k_shutoff_alarm
    ks8k_turnon_alarm              @46  ; ks8k_turnon_alarm

1,221

社区成员

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

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