静的ライブラリ (tinyxml2、sqlite3、openssl、libpq を含む) を介してすべてのサードパーティ コードをリンクするアプリケーションを作成しています。libpqd.lib にリンクしようとするたびに、すべてが正常に機能しています - 9.1.9 と 9.2.4 のソースを使用しました - 私は取得しています:
1>LIBCMTD.lib(dosmap.obj) : error LNK2005: __dosmaperr already defined in libpqd.lib(win32error.obj)
これが唯一のエラーで、これまでの検索は無駄でした。すべてのライブラリでマルチスレッド デバッグ ランタイム ライブラリを使用していることに注意してください/MTd
。これは、postgresql にはデフォルトではありません。以前は構成できなかった/MTd
andの代わりに andを使用するように、手動で win32.mak にパッチを適用しました。これにより、以前のリンカー エラーがいくつか解決されましたが、以前から存在していたため、この最後のエラーに関連しているとは思われません。/MT
/MDd
/MD
次の方法で libpq をコンパイルします。
nmake /f win32.mak DEBUG=1
そして、次の方法でリンクします。
#pragma comment ( lib, "libpqd.lib" )
ライブラリ ディレクトリはプロジェクト内で構成され、ライブラリはこのフォルダーにコピーされるため、使用されている正しいフォルダーであることがわかります。
これは通常、簡単に解決できるエラーですが、もうどこを見ればよいかわかりません。
postgresql サイトにはこれに関するスレッドが存在しますが、解決されていないようです: http://www.postgresql.org/message-id/39E6FC4547C24F9884435E23698B11DC@HIRO57887DE653