c++ - 用于 C# 的托管 C++ 代码

标签 c++ .net visual-studio

我正在尝试在 Visual Studio 中设置我的设置,以便我可以编写托管 C++ 代码,稍后由 C# 程序调用。我从一个新的 C++ 项目开始,这里是我更改的设置及其原因:

  • 预编译 header 不使用预编译 header 。因为我只是不想。
  • 公共(public)语言运行时支持/clr。据我了解,这是根本需要的。
  • 调试信息格式/ZInone。因为 /clr/ZI 不兼容
  • Enable minimal rebuild to no。因为 /clr/Gm 不兼容。
  • 基本运行时检查默认。因为/clr/RTC1不兼容。

毕竟,我现在遇到许多位于 xlocalexlocnum 中的 C2760 错误代码。错误具体说明

syntax error: unexpected token 'identifier', expected 'catch'

现在,我是这里的极端初学者,所以这可能是微不足道的,如果是这样,我深表歉意。我的目标是编写一个简单的 c++ 类,用托管代码包装它,并有一个 DLL,稍后我可以将它与 c# 程序链接.

当我查看 MSDN 文档页面时,他们只说要使用 /clr/LD 进行编译。好吧,我也找不到 /LD 选项,而且我知道 /LD 选项用于创建 DLL很重要。任何帮助或指导将不胜感激。

附言这是 Visual Studio Community 2017

最佳答案

事实是:您必须有 2 个项目。

  1. 只是旧的好 C/C++ 项目。您可以在此处放置第三方库,如 OpenSSL 或任何其他跨平台源。在这里,您可能会遇到删除/包装任何特定于平台的代码的挑战。
  2. Windows 运行时组件 - 这正是 CLI 代码,充当 native C/C++ 和托管 C# 之间的桥梁。您可以在 File -> New project,然后是 Visual C++ -> Windows Universal 中找到它。关于运行时组件的一般想法是您可以通过签名将 CLI 方法无缝导入到 C# 代码中,您可以直接在 CLI 代码中调用 C# 回调,所有 C#/CLI 类型都是二进制兼容的等等。这就是为什么您不能“只添加特别配置的 C/C++ 项目”。

关于c++ - 用于 C# 的托管 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48722285/

相关文章:

c++ - 规范化包含编译时*或*运行时值的对象构造

c++ - 为什么我收到以下错误 : "returning reference to temporary [-Werror=return-local-addr]"

c++ - (C++) 需要帮助解决输出文件错误

c++ - 单个继承的派生类的大小

asp.net - 创建新的 Azure 应用服务时出现问题

c++ - 捕获 lambda 无法捕获 range-for 循环的命名变量

c++ - vptr 是否曾经位于对象的开头?

c# - 访问器的静态扩展

c# - WaitHandle.WaitAny 以匹配 WaitForMultipleObjects 功能

c# - .net 通用类型对象转换为与其所持有的类型不同的类型