メインプロジェクトとDLLプロジェクトがあります。主な実行可能ファイルはDLLにリンクしています。メインプロジェクトには、次の機能があります。
int func(char *str)
{
.....
}
DLLプロジェクトでは、この関数を使用したいと思います。この関数を前方宣言して使用できますか?好き:
int func(char *str);
int dllFunc()
{
...
status = func(str);
...
}
前方宣言は使用できません前方宣言は別のものです。dllのメソッドを呼び出したい場合は、GetProcAdressまたはImplicitlinkingを使用する必要があります。
とにかく、いくつかのDLLから実行可能ファイル内に配置されたメソッドを呼び出したいようですが、私が知る限り、それを行うことができます。また、DLLはメインの実行可能ファイルではなくアプリケーション間で共有されるように設計されているため、あまり意味がありません。
それを行う1つの(かなり一般的な)方法は、アプリケーションからのコールバックを提供することです。
DLLの場合:
typedef void (*callback)();
callback my_callback;
void dll_register_callback(callback app_callback) { my_callback = app_callback; }
void do_things() { my_callback(); }
アプリケーションで:
void cb() {}
dll_register_callback(cb);