我有一个主项目和一个DLL项目。主可执行文件链接到DLL。 在主项目中我有一个功能:
int func(char *str)
{
.....
}
在DLL项目中,我想使用此功能。我可以转发声明此功能并使用它吗?像:
int func(char *str);
int dllFunc()
{
...
status = func(str);
...
}
答案 0 :(得分:0)
你不能使用前向声明前向声明是不同的东西。如果您想在dll中调用某些方法,则必须使用GetProcAdress或Implicit linking。
无论如何,看起来你想从一些DLL中调用放在你可执行文件里面的方法,据我所知,它可以完成。它没有多大意义,因为DLL被设计为在应用程序而非主要可执行文件之间共享。
答案 1 :(得分:0)
一种(相当常见的)方法是从应用程序提供回调,即
在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);