2010-07-14 94 views
2

我已經在Windows Server 2008 64位版本上編譯了一個dll。它可以在該版本的Windows上正常工作,但是如果我切換到Windows 7或XP 64位版本,dll不起作用。我如何使dll兼容所有三個64位版本的Windows版本?如何使64位DLL與64位版本的Windows Server 2008,Windows 7和Windows XP兼容?

我使用Visual Studio 2010中

+3

您可能有一些DLL或其他類似的東西的依賴。嘗試進程監視器來查看失敗。 – sharptooth 2010-07-14 06:27:01

+1

他確實,CRT的DLL版本毫無疑問。 – 2010-07-14 08:34:57

回答

3

您可以使用一個名爲Dependency Walker,看看哪些依賴你的.dll文件有程序,並消除是Windows版本之間的不同的人。

+0

我試過,可以ü指導我在哪裏把dll放在c:\ windows \ wow64system或dll放在根文件夾中 – 2010-07-14 06:32:11

2

檢查您的DLL中如何定義_WIN32_WINNTWINVER宏。要使您的DLL與Windows XP兼容,您應該將它們定義爲0x0501。這可以讓你在編譯時找到所有的依賴問題。有關這些宏的更多信息,請參閱here

+0

以及在項目設置下的鏈接器設置中,使用它被定義爲WIN32; NDEBUG; _WINDOWS; _USRDLL; ADHANDLLDLDLL_EXPORTS,我也使用SECURITY_WIN32和WIN32_DCOM宏沒有_WIN32_WINNT和WINVER被定義在我認爲。我有什麼可以讓dll依賴於任何其他操作系統的dll嗎? – 2010-07-14 07:30:04

+0

檢查'stdafx.h',它可以在那裏定義。如果沒有明確定義'_WIN32_WINNT',則編譯器會將其設置爲編譯DLL的操作系統的最高可能值。 – 2010-07-14 07:43:21