【问题标题】:Console application compiled as dll being used in managed winforms C++控制台应用程序编译为在托管 Winforms C++ 中使用的 dll
【发布时间】:2011-03-16 02:30:11
【问题描述】:

我用 C++ 编写了一个简单的控制台应用程序,其中包含几个 .cpp 文件和一个 .h 文件。我已将程序集设置为 dll。当我创建一个 winForms 项目时,我无法添加对 dll 的引用,因为它不是托管代码。很公平。所以我回到我的控制台应用程序并在项目的属性中将 Common Lanauge RunTime support 设置为 /clr。

当我尝试编译时出现错误:

错误 1 ​​错误 D8016:“/ZI”和“/clr”命令行选项不兼容

关于如何将控制台应用程序导入托管 c++ 以用于 winForms 项目的任何建议?

谢谢 托马斯

【问题讨论】:

  • 控制台应用程序不是 DLL;这是一个控制台应用程序。 DLL 通常是您可以调用的函数或您可以使用的 COM/ActiveX 接口。它不是一个独立的可执行文件。
  • 仅使用 /clr 编译 c++ 应用程序不会使其成为托管代码。托管 C++ 本身就是一个复杂的野兽。你到底想用这个程序编译为 DLL 做什么?
  • 嗯,我用控制台来测试它。我实际上只是创建了一个空项目,然后卡在一个头文件和 2 个 .cpp 文件中。我认为托管 C++ 只是建立在本机 C++ 之上?该项目只是简单的加密。几个暴露了方法的类。我想使用 winForms 在其上创建一个表示层。我不明白为什么它不能编译为 CLR。​​
  • C++/CLI 不仅仅是原生 C++。它有自己的附加数据类型、运算符和有关内存交互和分配的规则。仅使用 /clr 编译不会使代码神奇地变成托管代码。
  • 我的项目比较小,所以代码改动应该很小。我将只有 1 个函数供托管代码使用,并且可以使用 String^。转换我的项目有多容易?

标签: c++ dll reference console managed


【解决方案1】:

/clr 与 /ZI 不兼容

查看此页面以了解使用 /clr 时的限制:http://msdn.microsoft.com/en-us/library/ffkc918h.aspx

【讨论】:

    猜你喜欢
    • 2011-04-07
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 2017-07-03
    • 2018-12-30
    • 2014-07-01
    • 2014-09-10
    • 2013-05-07
    相关资源
    最近更新 更多