首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在我的项目中编译LNK2005和LNK1169时避免TetGen和LNK1169错误?

如何在我的项目中编译LNK2005和LNK1169时避免TetGen和LNK1169错误?
EN

Stack Overflow用户
提问于 2022-09-21 08:17:54
回答 2查看 37关注 0票数 1

我正在尝试编译TetGen并使用下面的代码对一个.ply文件进行四面体化,尽管我得到了以下两个链接器错误:

LNK2005 main已在tetgen.obj中定义

LNK1169一个或多个被定义为的乘法符号

我的项目解决方案中包含的文件是"tetgen.h""tetgen.cxx",这三个文件所在的文件夹路径包含在“项目Properties”> C/C++ > General >附加目录中。对于"monkey.ply“文件,我也是这样做的。

这是我的主文件中的所有代码:

代码语言:javascript
复制
#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

我对这些错误进行了研究,并进行了大量的调查,但不知道为什么会发生这种情况。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-22 08:27:41

对于将来在TetGen中可能遇到这个问题的人来说:问题是需要在tetgen.h中定义TETGEN_LIBRARY标志。我知道这一点,但是每次定义标志时,它都会不可避免地导致内存错误。因此,为了避免内存错误,我保留了未定义的TETGEN_LIBRARY。结果,在定义了TETGEN_LIBRARY之后,它就能工作了。问题是"monkey.ply“不存在/在错误的文件夹中。因为"monkey.ply“不存在,它引发了一个未处理的异常。为什么TetGen没有一个简单的句柄来在文件尝试加载之前检查它是否存在,这是我无法理解的。但那件事已经解决了。

票数 0
EN

Stack Overflow用户

发布于 2022-09-21 08:37:09

LNK2005 main已在tetgen.obj中定义

此消息试图告诉您,您的tetgen库包含main函数。您的“主文件”还包含一个main函数。这是个冲突。您应该从代码中删除main函数,并阅读有关如何提供替换的tetgen库的文档。通常,定义自己的main函数的库要求您将main重命名为其他名称,文档应该明确指定该名称。

代码语言:javascript
复制
#include "tetgen.h"

int main_replacement_called_by_tetgen()
{
    ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73797480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档