C++/CLI in action 中 有这么一段
You can specify the abstract and sealed modifiers on classes; a class can be marked both abstract and sealed. But such classes can’t be derived explicitly from any base class and can only contain static members. Because global functions aren’t CLS-compliant, you should use abstract sealed classes with staticfunctions, instead of global functions, if you want your code to be CLS-compliant.
下面是我 2005 下的代码 项目属性中 公共语言运行库的选项已经选为 /CLR
但代码编译运行 没有抱错 这是为何 ? 不是说不能用全局函数么?
谢谢!
#include "stdafx.h "
using namespace System;
ref class RefClass{
void fun(){
System::Console::WriteLine( "test ");
}
};
ref struct RefClass2{
void Func(){
System::Console::WriteLine( "test ");
}
};
void fun(){
System::Console::WriteLine( "gloable fun ");
}
int main(array <System::String ^> ^args)
{
Console::WriteLine(L "Hello World ");
RefClass2 c;
c.Func();
fun();
return 0;
}
------解决方案--------------------------------------------------------
如果是在团队
你的程序将被你的团队排挤在外(不能链接在一起)
自己单练的话 ,和你的程序在其它系统或机子上不兼容
------解决方案--------------------------------------------------------
我觉得没什么问题,就是你编译之后里边会含有二进制代码。
因为,全局函数不能生成CLR代码。
其他的人应该可以使用你的程序。如果都是在Windows上应该没什么不兼容的吧?
你试试用/clr:pure应该会出错吧?