2011-05-18 101 views
2

在機器上安裝了兩個版本的visual studio。我想知道是否較低版本的Visual Studio可以使用使用更高版本的Visual Studio構建的DLL?想知道如果較低版本的Visual Studio可以使用使用更高版本的Visual Studio構建的DLL?

+0

你爲什麼不試試看並找出答案? – jason 2011-05-18 14:45:13

+0

簡單案例的作品,想知道在複雜情況下是否有例外。我不能一個一個地嘗試。 – user705414 2011-05-18 15:01:45

回答

3

通常,您不能在一個程序中混合使用不同版本的CRT編譯的dll。 Here's a link to the documentation at MSDN

正如其他人所說,如果您保持界面簡單,它就可以工作。在鏈接到另一個版本的CRT的DLL中,不要釋放分配給一個CRT的內存,不要傳遞FILE *和類似內容。不幸的是,很難確定你可以做什麼以及不能做什麼。

+0

+1。好評。對不起,毀了666 ... – 2011-05-18 15:28:51

1

這取決於DLL。例如,如果您創建一個Win32 DLL,使用簡單的參數類型和相同的調用約定,它就可以工作。

1

只有當你限制自己什麼叫做C風格的界面 - 只有基本類型,即分配的任何資源代碼必須釋放它,也必須通過類似文件句柄,等你非內存資源抽象除非在一些非常嚴格的條件下,不能發送C++類或對象或釋放跨越DLL邊界的內存。

相關問題