如何允许变量处于“公共引用类”的公共/全局范围?
Visual C ++ [2010]
在我的主要DLL main.h中:
namespace fdll {
public ref class foo
{
public:
int bar(int num);
};
}
在我的DLL main.cpp中:
#include "main.h"
int fdll::foo::bar(int num)
{
return num;
}
在另一个项目中:
#using <main.dll>
#include "main.h"
fdll::foo f; <--- error wtf
int main()
{
Console::WriteLine(fdll.bar(2));
return 0;
}
错误给出:
错误C3145:'f':全局或静态变量可能没有托管类型'fdll :: foo'
可能不会声明全局或静态变量,或者引用gc堆中对象的本机类型的成员
答案 0 :(得分:1)
CLR对象不支持全局变量。检查一下:http://msdn.microsoft.com/en-us/library/by40z94e(v=vs.80).aspx
创建一个全局类并使用static来模拟全局变量或仅在函数范围内声明CLR变量。