2017-09-17 6 views
1

私はcmakeでwin32のテンソルフローを構築しようとしています。 libprotobuf.lib(descriptor.obj):致命的なエラーLNK1112:モジュールマシンタイプ 'x64'がターゲットマシンタイプ 'X86'と競合しています[A:\ src \ tensorflow \ tensorflow \ contrib \ cmake \ build32 \ proto_text.vcxproj]win32のためのtwnsorflowを構築します。

確認の結果、libprotobuf.libは確かにx64バイナリとしてビルドされています。

そこで、どこでwin32ライブラリをビルドするように変更する必要がありますか?

+1

[email protected]@@[email protected] 

から~OpDefのマングルされた名前を変更することで問題を修正x86バイナリをビルドするには、x86ライブラリのみを使用する必要があります。またはx64ライブラリを使用したい場合は、x64バイナリターゲットをビルドする必要があります。 – RbMm

答えて

-1

この問題は解決しました。明らかにビルド中にテンソルフローがprotobufをダウンロードし、生成されたプロジェクトファイルのターゲットマシンがx64に設定されています。これは簡単な修正でした。

は今、私は新しい問題が発生していますpywrap_tensorflow_internalプロジェクトの建物の間に、次のリンクエラーが起こった: エラーLNK2001:未解決の外部シンボル「パブリック:仮想__cdecl tensorflow :: OpDef ::〜OpDef(無効)」

〜OpDefデストラクタが__thiscallを使用している間に、プロジェクトで__cdecl呼び出し規約が使用されているようです。私はクラスデストラクタの呼び出し規約を変更することはできません。これがどうして起こるか分かりません。

この呼び出し規則の不一致の問題を解決するにはどうすればよいですか?

0

32bit tensorflow.dllをビルドするとき、私は同様のリンクエラーが発生しました。

したい場合、私は手動で

[email protected]@@[email protected] 

(後者私はop_def.pb.objの "dumpbin /symbol" を実行しています)

関連する問題