关于VC工程迁移到\clr的问题

时间:2022-05-01 06:35:52
大家好, 有个问题请教下.

我手上有个VC2005的项目,里面包含若干个工程, 其中有几个工程比较大. 最近由于有个库是C#写的, 因此其中一个工程需要设定成\clr的. 这个工程使用了预编译头文件, 里面添加了其它的几个工程的相关头文件. 我按照常规在stdafx.h里面加上了#include <afxwinforms.h>   // MFC Windows Forms support
可以编译的时候这个改了\clr的工程总是提示
error C2855: command-line option '/clr' inconsistent with precompiled header
请问这样的问题如何处理呢?
我试着去掉预编译头,但是也提示错误.请问大家有什么解决办法吗?

11 个解决方案

#1


预编译头?

#2


你这属于混合编程了,在托管的程序上加#pragma managed,在非托管的程序上加#pragma unmanaged

#3


请问2楼一下

这个需要加上clr进行编译的工程有很多文件,您的意思是每个都加上吗? 可是现在我只是在试原来的VC工程能不能在加上clr以后编译成功, 并没有加如任何的C#内容.

#4


你是把stdafx.h编程CLI的吧 ,需要把整个项目变的

#5


大家好,是这样的.这个VC2005的项目,包含ABCDE五个工程,其中A工程里面有个stdafx.h文件,里面包含了两个头文件,分别是属于B和C工程的. 

现在需要利用一个C#的库做显示, 这样一来就需要在A工程的某些cpp文件中包含和使用C#的库.

我的策略就是其它工程不做任何变化,先让A工程在设定成\clr以后编译通过. 代码改动就是前面说的在A工程的stdafx.h文件中加入 #include <afxwinforms.h>

可是编译A工程的时候提示与预编译头冲突. 我不可能去掉预编译头因为编译时间会增加很多. 难道是和预编译头里面包含的B和C工程的头文件产生了冲突? 这两个是很大的库, 我不能改的.

想问大家是什么原因? 有什么解决的办法没有? 谢谢大家.真的很着急弄了好久了.

#6


托管的代码语法和非托管的有很大不同,所以不能简单地加上/clr编译就行的。方法就是我之前说的那样,不明白的地方要勤用搜索查资料

#7


比如如何使用#pragma managed 和#pragma unmanaged,详细用法我一句半句也说不清楚的

#8


谢谢楼上的回答.

现在的问题是我的代码完全是VC的,一点C#的内容也没有,只是想加\clr选项后编译成功. 而且之前我自己造了一个简单的MFC程序,同时也造了一个C#的LIB, 给MFC工程加\clr选项后编译运行一点问题也没有, 并不需要添加#pragma managed 和#pragma unmanaged. 所以我想是不是设置上面的问题.

#9


自己顶自己,希望高手现身说法. 谢谢.

#11


谢谢楼上给出的连接. 我会按照它再试下. 我以前也看见过一个类似的.

#1


预编译头?

#2


你这属于混合编程了,在托管的程序上加#pragma managed,在非托管的程序上加#pragma unmanaged

#3


请问2楼一下

这个需要加上clr进行编译的工程有很多文件,您的意思是每个都加上吗? 可是现在我只是在试原来的VC工程能不能在加上clr以后编译成功, 并没有加如任何的C#内容.

#4


你是把stdafx.h编程CLI的吧 ,需要把整个项目变的

#5


大家好,是这样的.这个VC2005的项目,包含ABCDE五个工程,其中A工程里面有个stdafx.h文件,里面包含了两个头文件,分别是属于B和C工程的. 

现在需要利用一个C#的库做显示, 这样一来就需要在A工程的某些cpp文件中包含和使用C#的库.

我的策略就是其它工程不做任何变化,先让A工程在设定成\clr以后编译通过. 代码改动就是前面说的在A工程的stdafx.h文件中加入 #include <afxwinforms.h>

可是编译A工程的时候提示与预编译头冲突. 我不可能去掉预编译头因为编译时间会增加很多. 难道是和预编译头里面包含的B和C工程的头文件产生了冲突? 这两个是很大的库, 我不能改的.

想问大家是什么原因? 有什么解决的办法没有? 谢谢大家.真的很着急弄了好久了.

#6


托管的代码语法和非托管的有很大不同,所以不能简单地加上/clr编译就行的。方法就是我之前说的那样,不明白的地方要勤用搜索查资料

#7


比如如何使用#pragma managed 和#pragma unmanaged,详细用法我一句半句也说不清楚的

#8


谢谢楼上的回答.

现在的问题是我的代码完全是VC的,一点C#的内容也没有,只是想加\clr选项后编译成功. 而且之前我自己造了一个简单的MFC程序,同时也造了一个C#的LIB, 给MFC工程加\clr选项后编译运行一点问题也没有, 并不需要添加#pragma managed 和#pragma unmanaged. 所以我想是不是设置上面的问题.

#9


自己顶自己,希望高手现身说法. 谢谢.

#10


#11


谢谢楼上给出的连接. 我会按照它再试下. 我以前也看见过一个类似的.