我們開發了一個需要從非託管C++程序(以及Fortran程序)訪問的C#4.0模塊。 DLL被正確加載並且該方法可用於C++程序,但在調用指向C#代碼的方法時會引發異常。對於可視化:在C++代碼中更改.NET 4運行時激活策略
[Unmanaged C++/Fortran Projects]
-> controller.dll (unmanaged C++ within the C++ project)
-> managed_wrapper.dll (managed C++ within the C# project)
-> C# 4.0 Project
當控制器試圖調用託管C++(使用.NET 4.0框架)的異常被拋出。
我的懷疑是下面的配置需要被應用,因爲我們遇到錯誤時以前creating a proof of concept:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
我正確地運用它的概念的上述證據,但是這是在一項獨立獨立的控制檯應用由於非託管C++程序非常龐大,並且每個模塊的設置都不是通用的,因此我無法使用上述配置創建MyApplication.exe.config
文件並將其稱爲一天。
我的問題是這樣的:是否可以將該配置應用於特定的DLL?
因此,不可能通過非託管C++調用.NET 4代碼? –
@Chuck:如果您需要混合模式(C++/CLI).NET 4程序,據我所知,您必須**更改應用程序本身的app.Config。這令人難以置信的煩人,我真的希望我錯了。 (我們經歷了這個,我被迫將一個龐大的代碼庫移植到.NET 3.5中,正是出於這個原因 - 我無法在不打破另一個[第三方]插件的情況下將該策略添加到應用程序中,所以我被迫回到3.5端口) –
哦,jeez。我所做的每一項研究都表明了同樣的事情,但我希望有一個神奇的解決方案。非常感謝你的幫助。 –