私がやろうとしていることが可能かどうかはわかりませんが、それはありがたいことです。それはC++が強力な言語であることを本当に証明するでしょう。
だから、私はDLLとDLLによってエクスポートされた関数を使用するEXEを持っています。その関数は、別の関数へのポインタであるか、そうでなければならない引数を取り、それを実行します。このようなもの:
extern void RunFunction(void (*FunctionPonter)()) {
(*FunctionPonter)();
}
そして私はそれをこのように呼びます:
RunFunction(&FunctionToExecute);
引数として送信される関数には引数はなく、void関数のみが含まれます。
したがって、ここに示すように、これはすべて機能します。(*void)()
ここで、さらに進んで、たとえば、として定義したいと思いますAction
。
typedef (*void)() Action;
Action FunctionToExecute() {
// My code. This function won't return results - void
}
そして、次のようにDLL内の関数へのポインタを送信したいと思います。
// This is how it would be declared now in the DLL
extern void RunFunction(void (ACTION) {
(*FunctionPonter)();
}
// and this is how I would like to use it
RunFunction(FunctionToExecute);
私はVC2010を使用していますが、可能であれば、どうすればそれができるのかわかりません。あなたのアイデア、説明、そして助けてくれてありがとう!