【发布时间】:2015-10-06 17:25:05
【问题描述】:
我有一个在 Visual Studio 2010 中创建的 C++ 项目,它需要从 C# DLL 执行代码。我已经使用
#import "pathname\filename.tlb" raw_interfaces_only
指令,以及 CoInitialize(NULL) 和 CoUninitialize() COM 调用。
C# DLL 在 VS2012 中编译,面向 .NET 4.5。
我能够编译并运行该项目,似乎一切都很好,但我们注意到一些函数调用存在差异。这已通过将完全相同的 C++ 项目加载到 VS 2012、在配置属性中打开 /clr 并通过修改记事本中的 .vcxproj 文件将目标框架(C++ 项目的)更改为 v4.5 来验证。
所以,我想我的问题是:
为什么 C++ 项目需要以 .NET 框架为目标? C# DLL 不应该能够自己处理吗? (由汉斯·帕桑特回答)
为什么可以在关闭 /clr 的情况下通过 C++ 运行 C#.NET v4.5 DLL,并且没有任何可能无法工作的警告? (由汉斯·帕桑特回答)
为什么我什至可以从函数调用中得到结果? C# DLL 怎么可能完全“工作”(返回一致的结果)?为什么在面向 .NET v4.0 时返回不同的值?
是否可以在使用 VS 2010 的同时使用 C++ 代码中的 C# DLL?还是我需要将项目切换到 VS 2012?
提前致谢。
【问题讨论】:
标签: c# c++ .net visual-studio-2010 visual-studio-2012