質問

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で動作することを確認できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top