我可以在DLL中使用前向声明吗?

时间:2012-04-26 05:20:17

标签: c++ function dll

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

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

在DLL项目中,我想使用此功能。我可以转发声明此功能并使用它吗?像:

int func(char *str);

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

2 个答案:

答案 0 :(得分:0)

你不能使用前向声明前向声明是不同的东西。如果您想在dll中调用某些方法,则必须使用GetProcAdressImplicit 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);