私はこれまでに似たような質問が投稿されていることを知っていますが、私が見てきたすべてのものは変数がクラスに存在すると仮定しています。私はクラスの一部を除去し、同じようなことを試してみましたが、それでも同じエラーを取得していますstatic変数への未定義参照、クラスなし
TestController.cpp:(.text+0xd0): undefined reference to `vio::HORIZONTAL_MOTOR'
vio.h
#ifndef VIO_H
#define VIO_H
namespace vio
{
...
extern TransistorTuple HORIZONTAL_MOTOR;
extern TransistorTuple FRONT_MOTOR;
extern TransistorTuple BACK_MOTOR;
...
vio.cpp
...
void vio::initialize()
{
// Define variables
vio::TransistorTuple HORIZONTAL_MOTOR;
vio::TransistorTuple FRONT_MOTOR;
vio::TransistorTuple BACK_MOTOR;
...
}
TestController.cpp
...
void test::moveChair()
{
// Define variables
vio::TransistorTuple HORIZONTAL_MOTOR;
vio::TransistorTuple FRONT_MOTOR;
vio::TransistorTuple BACK_MOTOR;
...
}
vio.cppで正常に動作しますが、TestController.cppで同じことをするとエラーになります。私はTestControllerにvio.hを含めています。
これは明らかにいくつかの埋め込みコードであるため、コンパイラを使用すると便利です(多くの埋め込みコンパイラはsuck;))。しかし、... vio.cppでは、同じ '' namespace vio {...} ''ステートメントが必要です。そして、各変数に接頭辞は必要ありません。おそらく、あなたのコンパイラは理解しているでしょう... – BitTickler
私はLinux上でcmakeを使ってコンパイルしています。 vio.cppはうまくリンクしています。もう1つは何が起こっているのかわかりません。 – DSchana
トピックを外すビット:通常、グローバル変数を使用するのは悪い考えです。たぶんあなたは全体を再考したいと思うかもしれません。 – BitTickler