我们开发了一个需要从非托管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。我所做的每一项研究都表明了同样的事情,但我希望有一个神奇的解决方案。非常感谢你的帮助。 –