我有一個非常簡單的DLL寫在非託管C++,我從我的應用程序訪問。我最近切換到Visual Studio 2010,並且DLL從55k下降到35k,無需更改代碼,現在它將不再加載到Windows 2000中。我沒有更改任何代碼或編譯器設置。我有我的定義設置爲0x0500,其中應包括Windows 2000支持。有沒有其他人遇到過這個問題,或者對我能做什麼有任何想法?問題使用Visual Studio 2010編譯在Windows 2000中的C++ DLL
回答
Visual Studio 2010 cannot build binaries that run on Windows 2000。它實際上比這更糟,they won't run on Windows XP RTM or Windows XP Service Pack 1 either。這是因爲VS2010的C運行時庫需要EncodePointer API,直到SP2纔可用。
如果您想要支持早期版本的Windows,看起來您一直在安裝VS2008。您可以將整個項目移動到Visual Studio 2008,也可以從Visual Studio 2010項目中將vc90(Visual Studio 2008)工具集作爲目標。有關後一種方法的更多詳細信息,請參閱我的相關問題here。
感謝您的鏈接,這是一些不幸的消息。 :( – 2010-04-19 00:59:14
@Jon Tackabury:我知道 - 我真的很想用'auto' :( – 2010-04-19 01:01:08
我只是不想讓VS 2008和2010都安裝。:): – 2010-04-19 01:11:43
解決方案可能是在單獨的lib中提供EncodePointer(和DecodePointer),並將其優先鏈接到KERNEL32.LIB。這是一個完美支持的場景。過去,諸如「LIBCTINY」和「UNICOWS」之類的庫已經使用這種優先鏈接機制來添加/替換來自其他庫的選定但不是全部的功能。
沒錯,我沒有在寫下我自己的鏈接主題之前,先看看你的答案,否則我不會花那麼多時間與它一起玩。儘管如此,由於我的答案包含了準備使用和測試的代碼,我希望它有一些用處 - 請參閱http://stackoverflow.com/questions/2484511/can-i-use-visual-studio-2010s-c-compiler -with-visual-studio-2008s-c-runtime/3502056#3502056 – Suma 2010-08-17 12:07:18
一個重要的實現說明:您不直接提供EncodePointer/DecodePointer(DLL中的函數)。您需要替換它們的導入向量,這是喜歡.lib時解決的問題。它們被稱爲_imp__FunctionName。 – Suma 2010-08-17 19:39:40
- 1. 在Visual Studio 2010中使用dll問題
- 2. Visual Studio 2010中,PortAudio DLL編譯和鏈接問題,C++
- 3. Visual Studio 2010和Windows 2000
- 4. Visual Studio 2010 DLL的使用問題?
- 5. 在Visual Studio 2010中使用用Cygwin編譯的DLL
- 6. Visual Studio 2010的編譯問題
- 7. 如何使用Visual Studio 2010編譯64位的C DLL?
- 8. 在Visual Studio 2010中使用.dll C++
- 9. Visual Studio 2010的C++編譯器
- 10. 如何在visual studio 2010中編譯C?
- 11. 在Windows 7上從linux到visual studio 2010的c編程問題
- 12. 如何在使用Visual C++ 2010編譯時定位Windows XP sp3?
- 13. Visual Studio 2010的C++編譯器的問題
- 14. 問題編譯使用Visual C#中的.sln文件2010速成
- 15. Windows 8 Visual Studio 2010編譯錯誤
- 16. 試圖在Visual Studio 2010中編譯Tessnet2(Visual Studio 2008 C++)項目
- 17. 使用Visual Studio 2010編譯CUDA
- 18. Visual Studio 2010 x64 Windows 10編譯器
- 19. Visual Studio 2010編譯錯誤
- 20. Visual Studio 2010的C#單行編譯
- 21. 使用Visual C++ 2010 Express編譯cryptopp
- 22. 在Visual Studio 2010中鏈接DLL C++
- 23. 使用Visual Studio 2010 C++編譯器和連接器,無需安裝Visual Studio 2010
- 24. Visual Studio 2010編譯錯誤
- 25. DLL是不是在Windows中使用的Visual Studio 2010
- 26. 使用Visual C++ 2010編譯Qt 4.5
- 27. Visual Studio 2012本地C++ DLL x86編譯
- 28. 預編譯使用Visual Studio 2010
- 29. Visual Studio DLL問題
- 30. 添加引用問題在Visual Studio 2010
[Visual Studio 2010的C++編譯器和Visual Studio 2008的C++運行庫是否可以重複使用?](http://stackoverflow.com/questions/2484511/can-i-use-visual-studio-2010s-c -compiler-with-visual-studio-2008s-c-runtime) – Suma 2010-08-17 12:08:21