2012-01-22 8 views
2

libcurlを使用するDLLを開発しています。依存度にlibcurl.dlllibidn-11.dllを加えた後、私はlibcurl.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x308となる。Visual C++:libcurlを使用してDLLを作成する

PS:私はMSVS 2010

PPSを使用しています:私は正常にコンパイルしたいmingwのコンパイラでdllをその、何も問題はありません投げました。

ありがとうございます!

+0

なぜ異なるコンパイラでカールとプロジェクトをコンパイルしていますか? – jalf

答えて

7

にはlibcurl.dllが付いていますか?あなたはlibファイルにリンクするつもりであり、dllに直接リンクするつもりはありません。

+0

あなたは私の一日を保存しました:-) – eeerahul

3

Windowsの世界では、ダイナミックライブラリへのアクセスは通常、小さな静的ライブラリ(.lib)スタブによって行われます。

VSでは、実行時にDLLをロードするために必要なコードを含む.libファイルにリンクします。

.dllと直接リンクすることはできません。

Linuxに慣れている人は、やや面倒なように思えるかもしれませんが、それはそうです。

したがって、あなたのcurlライブラリ用の.libファイルはありますか?もしそうなら、それにリンクしてください。そうでない場合、あなたのVSプロジェクトのカールを使用することはもう少し作業になるでしょう。 (ただし、1つのオプションは、VSでカールをビルドすることで、.dllファイルと.libファイルの両方を提供します)

+0

Fwiw、インポートライブラリにはDLLをロードするためのコードは含まれていません。これは単にエクスポートされた名前のリストです。コンパイラーが生成した名前とは異なる名前をエクスポートするのは、Windowsではかなり日常的ですが、すべてのオペレーティング・システムDLLはそのようなものです。 GetProcAddress()を使いやすくする。そして、名前の装飾がプログラムをひどく不安定にする宣言エラーをキャッチすることを可能にするため。 –

+0

十分です。 :)私は本当にインポートライブラリに実際に何を見たことがない。 – jalf

関連する問題