2012-04-26 14 views
0

私はメインプロジェクトとDLLプロジェクトを持っています。 DLLへの主な実行可能ファイルリンク。私はこの機能を使用したい、DLLプロジェクトでDLL内で前方宣言を使用できますか?

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

:メインプロジェクトで は私が機能を持っています。この関数を宣言して使用することはできますか?のような:

int func(char *str); 

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

あなたが参照を追加しますdllをメインプロジェクトまたはその逆に変換しますか? – Milee

+0

私はメインプロジェクトにdllのリファレンスを追加しています。 – lalli

答えて

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でいくつかのメソッドを呼び出す場合は、GetProcAdressまたはImplicit linkingを使用する必要があります。

とにかく、実行可能ファイル内に配置されたメソッドをDLLから呼び出すと思っていますが、これは私が知る限り実行できます。 DLLは主な実行可能ファイルではなくアプリケーション間で共有されるように設計されているため、あまり意味をなさない。

関連する問題