サード パーティの DLL を受け取った場合、次のメッセージも受け取るはずです。
1) 関数プロトタイプを含むヘッダー
2) スタティック リンク ライブラリまたはインポート ライブラリ (DLL と同じベース名ですが、拡張子は .LIB)
私の混乱は、ある Dll を別の C++ DLL プロジェクトにリンクし、それをビルドして依存関係を適切にリンクする方法がわからないことです。関数プロトタイプはどこで入手できますか? 私の DLL プロジェクトでは、__declspec(dlliexport) を使用せずに .DEF ファイルを使用しています。DLL を C++ DLL プロジェクトにリンクするには、最低限必要なものは何ですか?
現在のコンセンサス (および SOF に関する私の調査から) は次のとおりであることを知っています。
1) 外部関数プロトタイプを取得したサードパーティのヘッダー ファイルを含めます (私はそれらを持っていません)。2) プロジェクト プロパティ シート (Visual Studio 2010) から .LIB ファイルを追加します。
それは行く方法ですか?DLL を実行可能フォルダーにコピーする必要がありますか? 正しい手順は何ですか?私がこれを自分でやろうとしている間、誰かが私を助けてくれませんか?
アップデート
Dll_A.h
extern void this_is_dll_A(void); // Prints DLL_A
Dll_A.c
#include <stdio.h>
#include "Dll_A.h"
void this_is_dll_A(void)
{
printf("THIS IS DLL A\n\n\n");
}
Dll_A プロジェクトに次の def ファイルを使用します
LIBRARY Dll_A
EXPORTS
this_is_dll_A @1
Dll_B.h
#include "Dll_A.h"
extern void this_is_dll_B(void);
プロパティ シートに Dll_A.h ヘッダー ファイルのインクルード フォルダーを追加します。また、リンカー オプションの .lib ファイルとそれを含むフォルダー。しかし、DLL はありません。
Dll_B.c
#include <stdio.h>
#include "Dll_B.h"
void this_is_dll_B(void)
{
printf("This is dll B...and...\n\n");
this_is_dll_A();
}
Dll_B プロジェクトに d_b.def ファイルを使用します
LIBRARY Dll_B
EXPORTS
this_is_dll_B @1
輸入品がない!? これが正しいかどうかはわかりません。
私の Dll_B プロジェクトでは、多くの Web サイトに含まれる SOF が推奨Dll_A.dll
するフォルダーにファイルをコピーしません。Debug
それはうまく構築されます。問題は、ヘッダーファイルなしでできるかどうか、またはすべきかどうかわからないことです。また、Dll_B を VS2010 の実行可能アプリ プロジェクトにリンクする場合、どのようにすればよいでしょうか。