我有一个主项目和一个 DLL 项目。主可执行文件链接到 DLL。在主项目中,我有一个功能:
int func(char *str)
{
.....
}
在DLL项目中,我想使用这个函数。我可以转发声明并使用它吗?喜欢:
int func(char *str);
int dllFunc()
{
...
status = func(str);
...
}
One (fairly common) way of doing it is to provide a callback from the application, i.e.
In DLL:
typedef void (*callback)();
callback my_callback;
void dll_register_callback(callback app_callback) { my_callback = app_callback; }
void do_things() { my_callback(); }
In application:
void cb() {}
dll_register_callback(cb);
您不能使用前向声明前向声明是不同的。如果要在 dll 中调用某些方法,则必须使用GetProcAdress或Implicit linking。
无论如何,看起来您想从某个 DLL 调用放置在可执行文件中的方法,据我所知,它可以完成。而且它没有多大意义,因为 DLL 被设计为在应用程序而不是主要可执行文件之间共享。