我已经阅读了很多关于在C ++项目中使用C#代码的问题的解决方案,包括这个:How to use c# code in C++ project
我还阅读了this,一位回答者说 Compile your C++ code with the /clr flag. With that, you can call into any .NET code with relative ease.
这是否意味着我可以使用C ++&如果我追加 /clr
标志,C#代码在同一个项目中?
我对此感到有点困惑,如果我转换C#项目的漫长路线,我只是浪费时间,我试图将部分内容用于C ++,如果这样做实际上并不需要。
基本上,几天前我在一个不同的主题上回答了我自己的问题而没有意识到示例项目的实际代码是C#: Obtaining Current Network Rate
任何人都可以给我一个明确的澄清,我是否正确理解这一点(我可以在C ++项目中使用C#代码,除了需要 /clr
开关之外没有任何问题) ?
我不确定SO是否适合提出这样的问题,所以请告诉我它是否不是没有任何解释而是没有贬低。
感谢。
修改
忘记提及这是Windows上的C ++ / CLI游戏服务器应用程序DLL。如果重要,它仅在Windows Server 2008 R2和Windows 7上使用。
答案 0 :(得分:2)
如果使用C ++ / CLI,则可以添加对其他.net程序集的引用,但不要在同一项目中混合使用C ++和C#代码。您要做的是使用C#在解决方案中创建一个新项目(或添加一个现有项目),然后在C ++ / CLI项目中添加对它的引用。
缺点是你需要在C ++和.Net类型之间编组(std::string
vs System::String^
),你还需要学习C ++ / CLI使用的附加语法({{1} },^
等。)。
进一步阅读:Pure C++: Hello, C++/CLI
答案 1 :(得分:1)
您需要在visual studio中制作C ++ / CLI项目。 C ++ / CLI与C ++略有不同,因为存在托管堆栈,因此管理内存并且可以避免内存泄漏(垃圾回收)。 只需创建一个C ++ / CLI项目并单击propietys并添加对C#项目的引用,它应该可以工作:D
答案 2 :(得分:1)
这意味着,使用/clr
开关,您可以访问为.Net框架编写的程序集(DLL或EXE)。因为可以使用任何.net语言(包括C#)创建此类程序集,所以可以在C ++中使用C#编写的“代码”,但这并不意味着您可以在C ++项目中编写C#。不幸的是 - 你不能。