x64用の静的pthread-win32 libをどのようにコンパイルしますか?
質問
pthread-win32 をx64で動作させるための作業が行われたようですが、ビルド手順はありません。 Visual Studio x64 Cross Toolsコマンドプロンプトを使用して簡単にビルドしようとしましたが、x64アプリケーションからlibにリンクしようとすると、関数のエクスポートが表示されません。まだlibをx86などとしてコンパイルしているようです。
適切な場所のmakefileに/ MACHINEを追加しようとしましたが、役に立ちません。誰かがこれを機能させましたか?
解決 2
正式にリリースされるまで、ライブラリのバージョン2.9を入手するにはCVSヘッドをチェックアウトする必要があるようです。バージョン2.9にはすべてのx64パッチが含まれていますが、コマンドラインから静的ライブラリをコンパイルしようとすると問題が発生します。
私が知っている唯一の回避策は、LIBを静的にリンクする代わりにDLLを使用することです。
他のヒント
私にとっては、64ビットWindowsコンパイラー(この特定の場合はmingw-w64クロスコンパイラー)を使用してから、(with2.9.1)のようにします:
$ make clean GC-static
次に、使用するためにインストールする方法(もちろん、この一部は必要ないかもしれません)、
cp libpthreadGC2.a $mingw_w64_x86_64_prefix/lib/libpthread.a
cp pthread.h sched.h semaphore.h $mingw_w64_x86_64_prefix/include
それを使用するには、これを定義する必要があります(使用するffmpeg configure行の例):
--extra-cflags=-DPTW32_STATIC_LIB
とにかくそれは一つの方法です。
別の方法として、同じことを行ってから* .hファイルを変更し、ヘッダーからdllexportへのすべての参照を削除します(またはヘッダーでDPTW32_STATIC_LIBを手動で定義します)。
ex:
sed 's/ __declspec (dllexport)//g;s/ __declspec (dllimport)//g'
(ref:zeranoeビルドスクリプト)
これが私がそれをした方法です(VS2015)。古いVisual Studioでも動作するはずです。
1)SourceForgeからリリース.zipをダウンロード
2)きれいなフォルダーに解凍します-" pthreads.2"
3)Visual Studioコマンドプロンプトを開き、「pthreads.2」に移動します。
4)引数なしで" nmake"を実行します。それはあなたがそれを構築するために「nmake」を与えることができるすべての正当なコマンドをリストするヘルプメッセージを生成します。詳細については、「pthreads.2 \ FAQ」を参照してください。 「クリーンアップ」処理の3つの異なるフレーバーを説明するファイル。
「VC」を構築することをお勧めします。および「VC-debug」 (そしておそらくそれらの静的なもの)のみ。 「実際の」pthreadは、LinuxなどのPOSIXプラットフォーム上のCシステムライブラリであるため、これらのコンボのみが、Linux、FreeBSDなどで得られるWindowsとまったく同じCエラー動作を提供します。
このメッセージが役立つ場合があります。
kgriffsの答えを拡張するには、32ビットDLLではなく64ビットDLLを実際にビルドするために、さらに2つのことを行う必要があります。
最初にCVS経由で最新のpthreadをダウンロードします(推奨されるとおりこちら)
1)64ビットビルドツールを使用する-コマンドラインで正しいVC環境設定を読み込むことで実現(詳細はこちら):
C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ vcvarsall.bat amd64
(11.0を使用しているバージョンに変更します)
2)pthreads Makefileに記述されているとおり:
TARGET_CPUは、Visual Studioコマンドプロンプトによって設定される環境変数です SDKによって提供される(VS 2010 ExpressおよびSDK 7.1) PLATFORMは、VS 2013 Express x64クロスで設定できる環境変数です 開発環境
つまり、vcvarによって実行されなかった場合(私の場合はそうではありません)、TARGET_CPUまたはPLATFORMを設定する必要があります(両方を設定した場合のみ):
set TARGET_CPU = x64
PLATFORM = x64
3)そして最後のステップ:
nmake clean VC
nmake clean VC-debug
これにより、64ビットDLLファイル(および適切なインポートライブラリとPDB)が作成されます。 Visual Studio 2012で動作することを確認できます。