0

我有一个主项目和一个 DLL 项目。主可执行文件链接到 DLL。在主项目中,我有一个功能:

int func(char *str)
{
    .....
}

在DLL项目中,我想使用这个函数。我可以转发声明并使用它吗?喜欢:

int func(char *str);

int dllFunc()
{
    ...
    status = func(str);
    ...
}
4

2 回答 2

0

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);
于 2012-04-26T09:44:13.433 回答
0

您不能使用前向声明前向声明是不同的。如果要在 dll 中调用某些方法,则必须使用GetProcAdressImplicit linking

无论如何,看起来您想从某个 DLL 调用放置在可执行文件中的方法,据我所知,它可以完成。而且它没有多大意义,因为 DLL 被设计为在应用程序而不是主要可执行文件之间共享。

于 2012-04-26T05:34:43.707 回答