我正在尝试编译TetGen并使用下面的代码对一个.ply文件进行四面体化,尽管我得到了以下两个链接器错误:
LNK2005 main已在tetgen.obj中定义
LNK1169一个或多个被定义为的乘法符号
我的项目解决方案中包含的文件是"tetgen.h"和"tetgen.cxx",这三个文件所在的文件夹路径包含在“项目Properties”> C/C++ > General >附加目录中。对于"monkey.ply“文件,我也是这样做的。
这是我的主文件中的所有代码:
#include "tetgen.h"
int main()
{
tetgenio in, out;
in.firstnumber = 0;
in.load_ply((char *)"monkey.ply");
tetgenbehavior* b = new tetgenbehavior();
tetrahedralize(b, &in, &out);
}下面是我使用的"tetgen.h“、"predicates.cxx”和"tetgen.cxx“文件:https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/libigl/tetgen
我对这些错误进行了研究,并进行了大量的调查,但不知道为什么会发生这种情况。任何帮助都将不胜感激。
发布于 2022-09-22 08:27:41
对于将来在TetGen中可能遇到这个问题的人来说:问题是需要在tetgen.h中定义TETGEN_LIBRARY标志。我知道这一点,但是每次定义标志时,它都会不可避免地导致内存错误。因此,为了避免内存错误,我保留了未定义的TETGEN_LIBRARY。结果,在定义了TETGEN_LIBRARY之后,它就能工作了。问题是"monkey.ply“不存在/在错误的文件夹中。因为"monkey.ply“不存在,它引发了一个未处理的异常。为什么TetGen没有一个简单的句柄来在文件尝试加载之前检查它是否存在,这是我无法理解的。但那件事已经解决了。
发布于 2022-09-21 08:37:09
LNK2005 main已在tetgen.obj中定义
此消息试图告诉您,您的tetgen库包含main函数。您的“主文件”还包含一个main函数。这是个冲突。您应该从代码中删除main函数,并阅读有关如何提供替换的tetgen库的文档。通常,定义自己的main函数的库要求您将main重命名为其他名称,文档应该明确指定该名称。
#include "tetgen.h"
int main_replacement_called_by_tetgen()
{
...
}https://stackoverflow.com/questions/73797480
复制相似问题