包含标题时

#include "ttmath/ttmath.h"

ttmath's web page所述(库包含在项目文件夹中的ttmath文件夹中),我收到许多编译器错误,如下所示:
main.cpp.obj:-1: error: LNK2019: unresolved external symbol ttmath_adc_x64 referenced in function "public: unsigned __int64 __cdecl ttmath::UInt<28>::Add(class ttmath::UInt<28> const &,unsigned __int64)" (?Add@?$UInt@$0BM@@ttmath@@QEAA_KAEBV12@_K@Z)

我正在使用QT Creator 3.3.1,它生成了CMakeLists.txt文件
project(my_project)
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})

最佳答案

here所述,问题是Visual Studio 64位不支持汇编代码文件ttmathuint_x86_64_msvc.asm的内联。因此,这些选项是

  • 通过添加禁用程序集
    #define TTMATH_NOASM 1
    

    包括ttmath.h之前。这将花费大约两倍的性能。
  • 手动组装并包含文件:
  • 运行命令"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\ml64.exe" /c ttmathuint_x86_64_msvc.asm(在ttmath文件夹内)。
  • 通过将CMakeLists.txt的最后一行替换为,将目标文件包含在编译中
    add_executable(${PROJECT_NAME} ${SRC_LIST} ttmath/ttmathuint_x86_64_msvc.obj)
  • 关于c++ - 在使用Visual Studio 2013 64位编译器编译的CMake项目中使用ttmath,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29732727/

    10-11 16:45