2012-04-26 63 views
0

我有一个主项目和一个DLL项目。主要的可执行文件链接到DLL。 在主体工程我有一个函数:我可以在DLL中使用前向声明吗?

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

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

int func(char *str); 

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

你添加参考dll进入主项目还是相反? – Milee 2012-04-26 05:28:44

+0

我将dll的引用添加到主项目中。 – lalli 2012-04-26 05:32:05

回答

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); 
0

你不能使用前向声明前向声明是不同的。如果你想在DLL中调用某种方法,你必须使用GetProcAdressImplicit linking

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

相关问题