線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4254
推到 Plurk!
推到 Facebook!

VC2008產生的lib檔無法透過BCB6的COFF2OMF.exe正常轉檔, 是否有其他方式可以做檔案轉換?

尚未結案
shonecheng
一般會員


發表:1
回覆:1
積分:0
註冊:2018-01-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2018-01-22 19:01:19 IP:125.227.xxx.xxx 未訂閱
我使用VC2008建立了一個lib檔, 內容只有建立一個函式做printf()字串輸出.
接著使用BCB6的COFF2OMF.exe將該lib檔做格式轉換, 原本的VC lib檔有6KB大小, 轉換後卻只有512byte大小
後來我一樣用BCB6建立了個console專案, 並將512 byte的lib檔加入專案, include該library的header file, 並在main中呼叫該函式
結果compile時就出現如下error:
[Linker Error] Unresolved external 'TestLibFunc()' referenced from D:\TESTVCLIB\UNIT1.OBJ

請問有人遇過類似的問題嗎?
BCB6的COFF2OMF.exe是否無法處理VC2008的lib檔?
有其他方法可以做COFF跟OMF的格式轉換嗎?
謝謝!
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2018-01-23 09:45:03 IP:60.250.xxx.xxx 未訂閱
看看這個行不行
https://kkkor.tian.yam.com/posts/11547852
原出處來自於
[發表] (VC-BCB 整合系列一) 如何由 BCB 使用 VC 所產生的 LIB 及 DLL
http://delphi.ktop.com.tw/board.php?cid=168&fid=923&tid=33420

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2018-01-24 23:26:41 IP:36.229.xxx.xxx 未訂閱
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
shonecheng
一般會員


發表:1
回覆:1
積分:0
註冊:2018-01-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2018-01-30 10:24:16 IP:125.227.xxx.xxx 未訂閱
感謝回覆指導!

不過參照網頁說明執行後遇到下面問題:
使用VC2008預設的dll宣告:
//TestdllNew.h
#define TESTDLLNEW_API __declspec(dllimport)
TESTDLLNEW_API int fnTestdllNew(void);

//TestdllNew.cpp
#include
// This is an example of an exported function.
TESTDLLNEW_API int fnTestdllNew(void)
{
printf("Hellow BCB lib from VC DLL\n");
return 42;
}

編好TestdllNew.dll後, 執行方法1:
implib -a -c -f mybcb.lib TestdllNew.dll ::a

Borland Implib Version 3.0.22 Copyright (c) 1991, 2000 Inprise Corporation
Error ::TestdllNew.dll: unable to open file
會遇到error

去除::a 參數後
implib -a -c -f mybcb.lib TestdllNew.dll
執行可以成功, 見出mybcb.lib, 但是size只有1KB大小, TestdllNew.dll有29KB大小

執行方法2:
impdef test.def TestdllNew.dll

test.def內容會有很多問號:
LIBRARY TESTDLLNEW.DLL

EXPORTS
??0CTestdllNew@@QAE@XZ @1 ; ??0CTestdllNew@@QAE@XZ
??4CTestdllNew@@QAEAAV0@ABV0@@Z @2 ; ??4CTestdllNew@@QAEAAV0@ABV0@@Z
?fnTestdllNew@@YAHXZ @3 ; ?fnTestdllNew@@YAHXZ
?nTestdllNew@@3HA @4 ; ?nTestdllNew@@3HA

格式與範例也不太一樣
請問上述程序是否哪裡有問題呢?
謝謝!

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2018-01-31 00:31:16 IP:61.228.xxx.xxx 未訂閱
我初步看,發現你可能有一個地方有誤會。 VC 與 BC 之間若要函式共用,只能是純C語言的函式。但你的例子中,並非是C,而是C++。 請參照以下的文章觀念

http://aftcast.pixnet.net/blog/post/22457055

另外,你說你做出來的LIB很小是正常的。LIB有分靜態與IMPORT LIB。若是IMPORT LIB 則是很小沒錯。 (不過話說你例子中的那個很小的LIB也是不能用,原因如上)



------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2018-01-31 11:36:58 IP:210.61.xxx.xxx 未訂閱
VC static library 要給BCB ?不行
解決方案,用VC將Lib包成DLL
BCB用動態載入的方式使用該DLL

===================引 用 shonecheng 文 章===================
我使用VC2008建立了一個lib檔, 內容只有建立一個函式做printf()字串輸出.
接著使用BCB6的COFF2OMF.exe將該lib檔做格式轉換, 原本的VC lib檔有6KB大小, 轉換後卻只有512byte大小
後來我一樣用BCB6建立了個console專案, 並將512 byte的lib檔加入專案, include該library的header file, 並在main中呼叫該函式
結果compile時就出現如下error:
[Linker Error] Unresolved external 'TestLibFunc()' referenced from D:\TESTVCLIB\UNIT1.OBJ

請問有人遇過類似的問題嗎?
BCB6的COFF2OMF.exe是否無法處理VC2008的lib檔?
有其他方法可以做COFF跟OMF的格式轉換嗎?
謝謝!
系統時間:2024-11-21 16:53:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!