2013-10-25 51 views
2

我正在使用C++ Builder XE4,嘗試使用某些導出的函數創建64位DLL。無法在C++ Builder 64位DLL中導出函數

下面是一些測試代碼:

#include <vcl.h> 
#include <windows.h> 

#pragma hdrstop 
#pragma argsused 

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) 
{ 
    return 1; 
} 

extern "C" __declspec(dllexport) __stdcall void Test() 
{ 
    // do smth 
} 

我創建兩個DLL文件,一個具有32位,其他的目標平臺 - 與64位的目標平臺,然後檢查這兩個DLL文件與IMPDEF。可執行程序。

隨着32位的DLL一切正常,我看到這個CMD:

EXPORTS 
Test 
___CPPdebugHook 

隨着64位的DLL的所有我看到的是:

EXPORTS 

有什麼可以的原因爲此,以及在Embarcadero C++中創建64位DLL的正確方法是什麼?

非常感謝。

回答

3

你的dll沒有問題。使用DependencyWalker(depends.exe)代替impdef.exe查看導出的函數。

+0

感謝您的回覆!我可以看到導出的函數與依賴walker,這兩個32位和64位版本的程序在打開我的dll時給我以下錯誤: 錯誤:至少有一個需要的隱式或轉發的依賴項不是找到。 錯誤:由於隱式依賴模塊中缺少導出功能,至少有一個模塊具有未解析的導入。 錯誤:找到具有不同CPU類型的模塊。 無論如何,謝謝你的建議。 –

+1

不要擔心這個錯誤。他們不是重要的問題。我甚至在VC++ dll上看過他們。 –

+0

我有同樣的問題,它不允許我調試DLL!我如何強制這個包含在x64 dll中?我有幾個dll,我以同樣的方式創建。有些項目已經創建了這個變量(CPPdebugHook),其他項目不創建。 – GPB83