用VC寫C的dll加入C++ Builder的連結問題 |
答題得分者是:RaynorPao
|
fullgui
一般會員 發表:22 回覆:28 積分:10 註冊:2003-04-01 發送簡訊給我 |
各位大大:
我已參照RaynorPao<(VC-BCB 整合系列一) 如何由 BCB 使用 VC 所產生的 LIB 及 DLL >的文章,不過我是用VC寫一個.c檔,然後把它轉成dll來給C++ builder的.cpp使用。我的.c檔的code如下:
#include "vcdll.h" #include "windows.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } int testfun(int a, int b) { return (a b); }我的.h檔如下: #define DLL_API __declspec(dllexport) DLL_API int testfun(int a, int b);我是使用靜態連結,結果我的C builder的.cpp要使用這個dll時,會產生此錯誤: [Linker Error] Unresolved external 'testfun(int, int)' referenced 請各位大大幫我解決這個問題,謝謝。 |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 各位大大: 我已參照RaynorPao<(VC-BCB 整合系列一) 如何由 BCB 使用 VC 所產生的 LIB 及 DLL >的文章,不過我是用VC寫一個.c檔,然後把它轉成dll來給C builder的.cpp使用。我的.c檔的code如下:#include "vcdll.h" #include "windows.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } int testfun(int a, int b) { return (a b); }我的.h檔如下:#define DLL_API __declspec(dllexport) DLL_API int testfun(int a, int b);我是使用靜態連結,結果我的C builder的.cpp要使用這個dll時,會產生此錯誤: [Linker Error] Unresolved external 'testfun(int, int)' referenced 請各位大大幫我解決這個問題,謝謝。 fullgui 你好: (1)建議你再確認該篇文章中的所有步驟 ( > > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
fullgui
一般會員 發表:22 回覆:28 積分:10 註冊:2003-04-01 發送簡訊給我 |
謝謝RaynorPao大大,我之前的作法是:我按照RaynorPao的文章,只不過是.cpp換成.c檔,在第一個步驟可以做出lib檔,但是在第二個步驟要做出dll檔時,會有以下錯誤:Creating library Debug/VCDLLc.lib and object Debug/VCDLLc.exp
VCDLLc.obj : error LNK2001: unresolved external symbol "int __cdecl AddMethod(int,int)" (?AddMethod@@YAHHH@Z)
Debug/VCDLLc.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
也就是說,我的寫法若是cpp,則文章中的步驟一和二皆可成功,但是檔案是c時,則不行。所以後來我在VC上,我直接把.c檔compiler成dll,然後再拿給C builder使用,但是會發生"[Linker Error] Unresolved external 'testfun(int, int)' referenced"的錯誤,因為工作需要,我必須把.c檔包成dll,然後在BCB上給.cpp檔裡的函式呼叫使用,因為RaynorPao大大的範例是以cpp為例,所以要是檔案是C檔的話,我應該注意哪些呢?謝謝。
|
fullgui
一般會員 發表:22 回覆:28 積分:10 註冊:2003-04-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |