【发布时间】: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