1

私は 1 つのフォーム (Form1.h) と実際のアプリケーションである plugin.ccp ファイルを含む C++ アプリケーションを持っています。このプログラムは、USB で cnc マシンと通信する Mach3 cnc コントローラー用のプラグインです。

Form1.h と plugin.ccp で使用できるグローバル変数が必要です。このサイトで見つけた解決策を試してみました。

Form1.h :

extern BOOL B1;

Form1.ccp

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

プラグイン.ccp

#include "Form1.h"

そして、エラーなしでコンパイルされます。しかし、このようなタイプの場合

Form1.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 エラー LNK2001: 未解決の外部シンボル "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 エラー LNK1120: 3 つの未解決の外部 E:\mach_vmotion\Debug\mach_vmotion.dll mach_vmotion
4

3 に答える 3

0

Form1.cpp 内。試す

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

明確に表示されるように、より多くのコードを投稿する必要があります。

于 2013-06-30T00:33:44.923 に答える
0

一般に、ヘッダー ファイル内の変数に代入しようとしないでください。これらの割り当てを の前または後に置いてもextern BOOL B1(またはその行を完全に削除しても)、正しく機能しません。代わりに、代入B1SomeOtherVarそれらが定義されている場所 (初期化または関数内のいずれか) を使用します。

于 2013-06-29T12:10:56.517 に答える