On 18 Jan 1999 08:29:27 GMT, chich.bbs@csie.nctu.edu.tw (琪) wrote:
>我現在手邊有一個程式是由別人那裡接手的,原來是以VC5.0寫成的dll程式,
>到了我這兒,因為需要使用Window所提供的class(object),也就必須將之改
>成C++的程式;於是,我在VC的整合環境中叫出原來的project,把*.c都更名
>為*.cpp,重新compiler & link,雖然產生了新的dll,不過在run原來的程式
>時,Loadlibary()卻不會過!因為我的porject中有*.def,而且我也驗證過,
>確實export出去的function是一樣的,會導致這樣的情形我實在是搞不懂!
>不曉得有沒有人知道為什麼會有這種情形,或者可以提供我任何debug的方向,
>拜託!拜託!非常感謝!!
你的程式改為 CPP 了但原先的 DLL 內之 function 仍為 C 之 function,
C++ 的程式要 link 到 C 的 function 需要宣告這些 function 為 C 的
function 而不是 C++ 的 function, 範例如下
extern "C" {
int f();
int g();
}
四眼的王蟲
> -------------------------------------------------------------------------- <
作者: feitian (單翼天使) 看板: Programming
標題: Re: SOS!!VC程式改成VC++程式會有問題嗎???
時間: Tue Jan 19 13:03:26 1999
※ 引述《chich.bbs@csie.nctu.edu.tw (琪)》之銘言:
: 我現在手邊有一個程式是由別人那裡接手的,原來是以VC5.0寫成的dll程式,
: 到了我這兒,因為需要使用Window所提供的class(object),也就必須將之改
: 成C++的程式;於是,我在VC的整合環境中叫出原來的project,把*.c都更名
: 為*.cpp,重新compiler & link,雖然產生了新的dll,不過在run原來的程式
: 時,Loadlibary()卻不會過!因為我的porject中有*.def,而且我也驗證過,
: 確實export出去的function是一樣的,會導致這樣的情形我實在是搞不懂!
: 不曉得有沒有人知道為什麼會有這種情形,或者可以提供我任何debug的方向,
: 拜託!拜託!非常感謝!!
C++會將名稱重新編碼, 建議你加上
extern "C" 壓抑C++的編碼功能, 他就會使用C的編碼方式,
就是單純的在名稱前面加上"_" ........ :)
--
※ 發信站: 批踢踢實業坊(ptt.twbbs.org)
◆ From: cmldb2.csie.ntu