2014-03-26 30 views
0

我正在嘗試使用CLR選項創建混合模式(託管和非託管)C++ DLL,並且我需要使用AFX庫。所以我在文件中使用了「afxwin.h」(使用GL/gl.h)。 但是,無論我做什麼,我都遇到了編譯錯誤,我嘗試了項目設置中的每個選項來修復它們,但沒有用。如何創建使用AFX庫的混合模式CLR .NET DLL?

答:當我編譯CLR選項我看到這個錯誤(當它編譯包括afwin.h文件):

1> C:\ Program Files文件(x86)的\微軟的Visual Studio 10.0 \ VC \ atlmfc \ include \ afx.h(24):致命錯誤C1189:#error:使用/ MD [d]構建MFC應用程序(CRT dll版本)需要MFC共享dll版本。請#define _AFXDLL或不要使用/ MD [d]

B.當我用_AFXDLL在stdafx.cpp中定義或啓用「在共享DLL中使用MFC」進行編譯時,爲了解決A中的錯誤,我看到這些以及同一個文件中的其他大量錯誤:

1> _WIN32_WINNT未定義。默認爲_WIN32_WINNT_MAXVER(請參閱WinSDKVer.h) 1> c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ atlmfc \ include \ afxanimationcontroller.h(46):錯誤C2059:語法錯誤:' - ' 1 > c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ atlmfc \ include \ afxanimationcontroller.h(60):error C2143:syntax error:missing';'之前 '}' 1> C:\程序文件(86)\微軟的Visual Studio 10.0 \ VC \ atlmfc \包括\ afxanimationcontroller.h(60):錯誤C2238:意外的標記(一個或多個)之前 ';' (x86):錯誤C2059:語法錯誤:'公共' 1> c:\ program files(x86) \微軟的Visual Studio 10.0 \ VC \ atlmfc \包括\ afxanimationcontroller.h(65):錯誤C2059:語法錯誤: ')' 1> C:\程序文件(86)\微軟的Visual Studio 10.0 \ VC \ atlmfc \包括\ afxanimationcontroller.h(65):錯誤C2589: ' - ':上的右側非法令牌 '::' 1> C:\程序文件(86)\微軟的Visual Studio 10.0 \ VC \ atlmfc \包括\ afxanimationcontroller。 H(65):錯誤C2059:語法錯誤: '::' 1> C:\程序文件(86)\微軟的Visual Studio 10.0 \ VC \ atlmfc \包括\ afxanimationcontroller.h(67):錯誤C2143:語法錯誤: 失蹤 ';'前「{」

關於如何解決這個問題的任何想法?我正在使用VS 2010.

回答

0

之後將MFC選項更改爲「在共享DLL中使用MFC」並不那麼直截了當,還有其他選項可能需要更改。

最簡單的方法是使用嚮導創建一個新的虛擬MFC項目,並比較兩個項目的項目屬性。

重新CLR,對我來說有效的方法是將所有託管的C++代碼放在一個或兩個來源中,並僅爲這些來源打開/ CLR,而不是整個項目。

+0

謝謝愛德華。我能夠找出類似於你所提到的解決方案。實際上,我確實有一個方便的完整MFC項目,其設置和文件與我比較。我所要做的就是將其他幾個afxwin相關文件添加到我的stdafx.h文件中,並解決了編譯問題! –

+0

不錯,你已經解決了你和你的自我。如何與世界分享你的興奮之後,分享也是解決方案;) – SoLaR