如何在 Visual C++ 中将托管变量用作全局变量?
Posted
技术标签:
【中文标题】如何在 Visual C++ 中将托管变量用作全局变量?【英文标题】:How to use managed variable as global in Visual C++? 【发布时间】:2014-05-29 19:42:29 【问题描述】:我正在用 Visual C++ 编写 MFC 应用程序并使用一个 C# 库。 Dou to I 结合了非托管和托管的类和变量。我需要一些来自 C# 的托管类 put 和 read to/from global scope 可以从整个应用程序访问。我试过了(简单的例子):
App.h:
class MyClass1
public:
gcroot<Namespace::Something^> var;
;
class MyClass2
public:
static gcroot<Namespace::Something^> var;
;
extern MyClass1 *cl1;
App.cpp
MyClass1 *cl1 = new MyClass1();
当我使用“cl1->var”时,我得到 System.NullReferenceException,MyClass2 返回错误
error LNK2020: unresolved token (0A0003BE) "public: static struct gcroot ...
error LNK2001: unresolved external symbol "public: static struct gcroot ...
请帮助我,如何在整个应用程序中使用“Something^ var”?
【问题讨论】:
【参考方案1】:与任何其他 c++ 静态成员一样,除了声明它之外,您还需要定义它。所以在命名空间范围内的 App.cpp 中,你需要:
gcroot<Namespace::Something^> MyClass2::var;
【讨论】:
以上是关于如何在 Visual C++ 中将托管变量用作全局变量?的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 调试器中查看命名空间的全局变量?
在Visual Studio 2010中将Native / C ++ DLL链接到托管C ++ / CLI包装器
C++,Visual Studio 2017:从加载的 .dll 中访问 .exe 的全局变量 [重复]
如何在 Visual C++ 中将字节数组转换为十六进制字符串?
如何在 Visual Studio 2013/2015 中将 Visual C++ 再分配文件 (.dll) 重新分配到我的应用程序