为win32构建twnsorflow

时间:2017-09-17 18:57:44

标签: winapi tensorflow

我正在尝试使用cmake为win32构建tensorflow。一切都很好,直到达到这条线: libprotobuf.lib(descriptor.obj):致命错误LNK1112:模块机器类型'x64'与目标机器类型'X86'冲突[A:\ src \ tensorflow \ tensorflow \ contrib \ cmake \ build32 \ proto_text.vcxproj]

检查后,libprotobuf.lib确实构建为x64二进制文件。

那么我应该在哪里进行更改以使其构建win32库?

2 个答案:

答案 0 :(得分:0)

构建32位tensorflow.dll时,我遇到了类似的链接错误。

我通过从

手动更改错误名称~OpDef来解决问题
??1OpDef@tensorflow@@UEAA@XZ

??1OpDef@tensorflow@@UAE@XZ

(后者通过在dumpbin /symbol上运行“op_def.pb.obj”找到了

答案 1 :(得分:-1)

此问题已解决。显然在构建期间,tensorflow下载protobuf,生成的项目文件将目标机器设置为x64。所以这很容易解决。

现在我遇到了一个新问题:在构建pywrap_tensorflow_internal项目期间,发生了以下链接错误: 错误LNK2001:未解析的外部符号" public:virtual __cdecl tensorflow :: OpDef :: ~OpDef(void)"

看起来项目正在使用__cdecl调用约定,而~OpDef析构函数正在使用__thiscall。我无法改变类析构函数的调用约定。我不知道这是怎么发生的。

有关如何修复此调用约定不匹配问题的任何想法?