0

重複の可能性:
未定義の参照/未解決の外部シンボル エラーとは何ですか? また、どのように修正すればよいですか?

#include <FakeMas.h>
#include <zinc-testsupport-client-api/ClientFactory.h>
#include <zinc-testsupport-client-api/Process.h>
#include <zinc-testsupport-client-api/ProcessCreator.h>

    FakeMas::FakeMas() {    
        ClientFactory &clientFactory(PluginFactory::getInstance<ClientFactory>(pluginConfig));
        boost::shared_ptr<ProcessCreator> webServerProcessCreator = clientFactory.createProcessCreator();
    }

ビルドすると、次のようなエラーが表示されます。

...../src/.libs/libZincTestWebServer.so: undefined reference to `zinc::testsupport::client::ClientFactory::createProcessCreator()'

興味深いのは、クラスの 2 行目をコメントアウトすると、

boost::shared_ptr<ProcessCreator> webServerProcessCreator = clientFactory.createProcessCreator()

それは成功を築くでしょう

でビルドできるので、リンケージの問題はないようです

ClientFactory &clientFactory(PluginFactory::getInstance<ClientFactory>(pluginConfig))

それで、どのようにクラスを見つけることができますが、関数を見つけることができませんか??

ところで、関数は正しい方法で宣言および定義されていると思います。

boost::shared_ptr<ProcessCreator> ClientFactory::createProcessCreator() {
    .........
}

誰かがそれについて何か考えましたか?ありがとう

4

1 に答える 1

0

ClientFactoryクラスが定義されている(宣言されていない)ソースファイルをチェックし、メソッドの実装があることを確認することをお勧めしますcreateProcessCreator()。メソッドの1つが宣言されているが実装されていない場合でも、有効なクラスを作成してそのインスタンスを作成することは確かに可能です。

また、linkコマンドをチェックして、このメソッドが含まれていると思われるオブジェクトファイルにリンクしていることを確認してください。

PSまた、そのメソッドのスペルと大文字と小文字をチェックして、すべての場所で一致することを確認します(ただし、それが問題である場合は、他のコンパイルエラーが発生すると思います)。

于 2013-01-11T18:03:08.220 に答える