精華區beta Programming 關於我們 聯絡資訊
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