1

我有一个带有一种形式(Form1.h)的 C++ 应用程序和一个作为实际应用程序的 plugin.ccp 文件。该程序是 Mach3 cnc 控制器的插件,它通过 USB 与 cnc 机器通信。

我想要一个可以在 Form1.h 和 plugin.ccp 中使用的全局变量。尝试了我在此站点上找到的解决方案。

表格1.h:

extern BOOL B1;

Form1.ccp

#include "Form1.h"
BOOL B1 = TRUE ;

插件.ccp

#include "Form1.h"

它编译没有错误。但是当一个像这样的类型

表格1.h

B1 = FALSE;
// or 
SomeOtherVar = B1;

它给了我

错误 1 ​​错误 LNK2020: 未解析的令牌 (0A00003B) "int mach_plugin::B1" (?B1@mach_plugin@@3HA) E:\mach_vmotion\Plugin.obj mach_vmotion
错误 2 错误 LNK2020: 无法解析的令牌 (0A00000E) "int mach_plugin::B1" (?B1@mach_plugin@@3HA) E:\mach_vmotion\Form1.obj mach_vmotion
错误 3 error LNK2001: unresolved external symbol "int mach_plugin::B1" (?B1@mach_plugin@@3HA) E:\mach_vmotion\Form1.obj mach_vmotion
错误 4 错误 LNK2001: 无法解析的外部符号 "int mach_plugin::B1" (?B1@mach_plugin@@3HA) E:\mach_vmotion\Plugin.obj mach_vmotion
错误 5 error LNK1120: 3 unresolved externals E:\mach_vmotion\Debug\mach_vmotion.dll mach_vmotion
4

3 回答 3

2

错误消息表明您有类似的内容:

namespace mach_plugin {
#include "form1.h"
}

而您的 B1 是在全局范围内定义的。确定它所属的位置并在标题匹配中进行声明 - 并避免在任何块中包含文件namespace,, extern "C", 等等。

于 2013-06-29T12:34:46.273 回答
0

一般来说,不要尝试分配给头文件中的变量。无论您将这些分配放在之前还是之后extern BOOL B1(或完全删除该行),它都无法正常工作。相反,分配B1SomeOtherVar定义它们的位置(通过初始化或在函数内部)。

于 2013-06-29T12:10:56.517 回答
0

在 Form1.cpp 中。尝试

#include "Form1.h"
namespace mach_plugin{
BOOL B1 = TRUE ;
}

您需要发布更多代码,以便我们可以清楚地看到它。

于 2013-06-30T00:33:44.923 回答