私はいくつかのコンポーネントをモジュール化しようとしているプロジェクトに取り組んでいます。これらの1つはWindowingです。私はメインのEXEに入力を戻そうとしていますが、メイン入力システムクラスのメインメソッドを呼び出すユーザーインターフェイス関数を使ってこれを行います。後者のクラスはあまりにも複雑すぎて、両方のシステムで利用できるヘッダを持つことさえあります(多くのクラスに依存します)。DLLはどのようにしてEXEクラスにアクセスできますか?
とにかく、実際の問題は、入力インターフェイスクラスのどのメソッドにもアクセスできないことです。
class WINDOW_EXPORT_CLASS GameWindow {
private:
InputInterface *input;
virtual void SetInputPointer(InputInterface *);
...
};
これは私のDLL/SOファイルにあり、このすべてにアクセスできます。しかし、私は入力のメンバーにアクセスすることはできません。 Bashがシンボルの検索エラーでクラッシュする:
./bin/window.so: undefined symbol: _ZN14InputInterface16SetMouseInWindowEb
これを解決する方法はありますか?私の入力インタフェースクラスのヘッダは両側に含まれています。クラスにはvoid関数が含まれており、エクスポートされません(私はそれが可能であるかどうかわかりません。エクスポートする必要がある場合は、どうすればいいか教えてください)。
おそらくプラグインインタフェースが必要です。 –
他のユーザーである1201ProgramAlarmは書き込み応答を持っていましたが、私はそれが何であるかは分かりません。InputInterfaceのヘッダーは実行可能ファイルにあり、そのヘッダーは実行可能ファイルとdllの両方で参照されていました。機能仮想化で問題を解決しました。 –