こんにちは 私はC++開発者ではなく、他の誰かのアプリケーションをコンパイルしようとしています。ビルドは成功しますが、私は5つの '一貫性のないdllリンケージ'の警告を受け取ります。他の人のvs C++ appをコンパイルする - 矛盾したリンケージ
dllは作成されますが、既存のdllと同じシナリオでは機能しません。コードの変更はありません。いくつかのグーグル後
は、私は、ヘッダファイルで見つかった、それはこれに関係していると仮定します。
#ifdef CPLAPPLET_PROGRAM_EXPORTS
#define CPLAPPLET_PROGRAM_API __declspec(dllexport)
#else
#define CPLAPPLET_PROGRAM_API __declspec(dllimport)
#endif
とCPLAPPLET_PROGRAM_EXPORTSがコマンドラインで定義されていると言うのコード内のコメントがあります。
の警告は、エクスポート機能に起こる、このように:
HRESULT _stdcall CCplApplet_PROGRAM::DllUnregisterServer()
{
// our code added here
return 0;
}
誰かがここでは正しい方向に私を指すことができますか?
ありがとうございました。コメントに対処するための
EDIT:
私はVS 2008でのC++のWin32 DLLプロジェクトを作成している、と私は彼らの.cppファイルを追加しました、.H、このプロジェクトに.DEFファイルが、それがすべてです。単に 'build'をクリックするのではなく、.defファイルなどで具体的に何かする必要があるのだろうかと思います。
ヘッダファイルはそうのようなメソッドを定義しています
class CPLAPPLET_LNK_PROGRAM CCplApplet_PROGRAM {
public:
static LONG APIENTRY CPlApplet(HWND hWnd, UINT uMsg, LONG lParam1, LONG lParam2);
private:
...
HRESULT _stdcall DllUnregisterServer(void);
...
};
.defファイル:
LIBRARY "CplApplet_PROGRAM"
EXPORTS DllUnregisterServer PRIVATE
ソリューションを構築していますか?リンク行の.defファイル指定を失った可能性はありますか? – Rup
'DllUnregisterServer'はヘッダファイルにどのように定義されていますか?ヘッダーファイルで 'class CPLAPPLET_PROGRAM_API CCplApplet_PROGRAM ...'を使用しますか?また、VSからビルドする場合は、フラグが定義されていますか? – Asha
ありがとうございます - 私はこれらの質問に対処するために編集しました。アシャ、あなたはどんな旗を言いましたか? –