我刚刚安装了Visual 2017,我想使用NTL库。我遵循了这里描述的步骤(对于VS2013)。Compiling NTL library in Visual Studio 2013
正如预期的那样,它会编译(我希望有几个可以忽略不计的警告)。
然后,在相同的解决方案下,我将执行以下连续步骤:(在相同的解决方案下)
这些步骤应该适用于VS2013 & VS2015,不幸的是,当我构建时,我得到了4个与链接器相关的错误(LNK2019)。
它们都类似于下面的例子:
错误(?MatPrime_crt_helper_deleter@NTL@@YAXPAVMatPrime_crt_helper@1@@Z)未解析的外部符号"void __cdecl NTL::MatPrime_crt_helper_deleter(class NTL::MatPrime_crt_helper *)“函数中引用的LNK2019 :Staticvoid__cdecl NTL::MatPrime_crt_helper *) (?deleter@MatPrime_crt_helper_deleter )_policy@ZZ_pInfoT@NTL@@SAXPAVMatPrime_crt_helper@3@@Z) NTLtest <thePathToTheLib> (ZZ_p.obj) 1
你能告诉我怎么做吗?
我已经尝试构建了这个例子-- ZZ_pEXTest.cpp ->
提前谢谢你!
发布于 2017-07-12 14:42:07
首先,我假设您得到了与我相同的4个错误。我得到了你在问题中显示的那个,再加上三个。在所有情况下,它都涉及代码中实际存在的方法或函数的前向声明。
但是,声明中的类型是类,实现中的类型是结构。因此,函数签名是不一样的,链接器找不到实现。
因此,我简单地更新了参数类型的前向声明,使其为: structs。
在lip.h中,将_ntl_general_rem_one_struct更改为struct。在ZZ_p.h中,将MatPrime_crt_helper更改为struct。
我相信这就是我所做的一切。
您不应该真的需要对代码进行更改。可能有一个编译器开关,或者它只在VS中失败。我不知道。我只知道它是由一个比我聪明得多的人写的,而且生命太短了;我已经做出了改变,我正在继续前进。
https://stackoverflow.com/questions/44695774
复制相似问题