win中使用trimesh库——从编译开始

事情是这样的

我想要运行草图提取的应用的源码
但是它的源码只有一个C文件
然后它说要使用这个文件需要依赖trimesh2这个库

suggestive contour的说明

您还需要最新版本的 trimesh2 库。源代码是 C++,已知可以使用 g++ 版本 3.3.x 或更高版本进行编译(在其本机、 Cygwin和Mingw32化身中)。某些版本的 g++ 存在错误:如果出现意外行为,请尝试关闭循环展开(从相应的 Makedefs 文件中删除 -funroll-loops)或完全禁用优化。

警告: gcc 版本 3.4.2、4.0.0 和 4.1.2 已知会错误编译 rtsc,并且 Mac 上的 4.0.0 存在动态链接问题。此外,已知该代码无法使用 MSVC++ 6 进行编译。

trimesh2的说明

该代码是用 C++ 编写的,并且已知可以在几个类 Unix 操作系统(Linux x86 和 x86-64、Solaris、Mac OSX)上使用最新 (4.x) 版本的 g++ 进行编译。可以使用 Cygwin 或 MinGW32 在 Windows 下编译。有趣的是,代码可以使用 MS Visual Studio .NET 或更高版本(不是MSVC 6)编译,但我无法支持这一点——你只能靠你自己了。(但是,我很乐意接受修复编译的补丁,并且会考虑压制警告的补丁。)
警告:已知某些 gcc 版本会错误编译 trimesh2。
请避免使用 4.1.2 或任何早于 4.0.1 的版本。

如何安装trimesh这个库呢

trimesh库的github地址
我下载了一个预编译版本
里面有
在这里插入图片描述
感觉东西很全的样子
我觉得应该把include文件放到项目目录里去
把lib文件放到库目录里去
然后编译项目
但是这样做之后会报错
在这里插入图片描述
然后我按照这个链接在 属性配置管理–》》链接器—》》输入–》》附加依赖项 中,debug|x64 加上了trimesh.lib
然后就报这个错
在这里插入图片描述
所以我觉得应该是 他预编译的库的代码在我的电脑上不能用

我尝试用make来自己编译trimesh库

报错说
在这里插入图片描述
readme里面说要改makedef
所以我考虑是不是要改这个
在这里插入图片描述
然后改了一下 发现没有作用

然后我又发现readme里面说
在这里插入图片描述
然后我用mscv文件夹里的sln文件build出来了lib文件 把这些lib文件替换到了项目里
然后报了这样的错
在这里插入图片描述
这个链接里面说:

Debug使用了Release的库文件。
即使链接库里面两个都添加着,但是release库文件放在了debug前面,也是出错的。默认按顺序使用库文件。
类似错误:如release下使用了Debug的库文件,报错类似:
error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”.

所以我又在属性配置管理–》》链接器—》》输入–》》附加依赖项 中,debug|x64 加上了trimeshd.lib、trimesh2.lib
然后就没有这个值0不匹配2的错误了
但是还有
在这里插入图片描述
所以我又在属性配置管理–》》链接器—》》输入–》》附加依赖项 中,debug|x64 加上了gluitd.lib、gluit.lib
还剩下这个错
在这里插入图片描述
我看应该是这个文件的错 我又发现rtsc.cc也有这个bool 所以我把这个bool 改成了Int
然后就编译成功了
在这里插入图片描述

获得了一个exe后

cd C:\Users\80955\Documents\快捷\科研\opengl笔记\trySketch\1NewWindow\1NewWindow\bin
1NewWindow camel-collapse-01.obj

在这里插入图片描述

以下是我成功之前的一些错误尝试(只是懒得删了 可以不看):

我的gcc版本

所以我觉得我编译总是错误可能是gcc版本的问题?

C:\Users\80955>gcc --version
gcc (MinGW.org GCC Build-2) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

用make命令编译项目:失败 可能是makefile文件或者mingw版本问题?

使用makefile
makefile的编写原理基础
如何安装minGW
在这里插入图片描述

用vs编译项目

用visual studio编译trimesh 其中有部分有误 需要参考下面那个链接
vs编译静态库

说明

说明:trimesh2-2.10.zip中包含了freeglut,glui和本身的trimesh三个库。trimesh2-2.10使用的glui版本为2.01f,并添加了glui_add_controls.cc等内容,在trimesh2-2.10提供的demo中只需编译freeglut库,其自带的glui库在编译rtsc时才需编译。本文配置仅使用trimesh2-2.10.zip文件即可。

编译trimesh2静态链接库项目:

一、创建项目

1、打开Microsoft Visual Studio 2010,选择File->New->Project。

2、在New Project中选择Installed Templates->Visual C+±>Win32。

3、选择Win32 Console Application空项目,设置名称:trimesh,设置解决方案名:trimesh2。

4、单击OK,在出现的Win32 Application Wizard的Overview对话框中点击Next。

5、在Application Settings中,选择Application type下的Static library。 这个 改成 创建项目后点属性 常规那栏,把.exe换成.lib

6、勾选Additional options下的Empty project。

7、单击Finish创建项目。

二、添加源码

1、解压trimesh2-2.10.zip,将\trimesh2\include文件夹拷贝到刚才新建的项目路径路径\trimesh2\之下。

2、将\trimesh2\libsrc\目录下的所有文件拷贝到项目路径\trimesh2\trimesh\之下。

3、右键单击项目,将~\trimesh2\trimesh\目录下刚才拷贝的所有.cc文件添加到项目中。

4、右键单击项目,选择属性,在VC++ Directories下的Include Directories中添加$(SolutionDir)include。

5、在项目路径~\trimesh2\下新建文件夹bin和lib。bin存放可执行文件,lib存放库文件。

6、右键单击项目,选择属性,将Configuration Properties->General下的Output Directory值改为$(SolutionDir)lib。

7、单击应用,确定,添加完毕。

三、编译trimesh2库
右键单击项目,Build,生成链接库,若没有错误并且~\trimesh2\lib目录下出现trimesh.lib文件,则编译成功。

编译freeglut动态链接库项目:

一、创建项目

1、在New Project中选择Installed Templates->Visual C+±>Win32。

2、选择Win32 Console Application,设置名称:freeglut,Add to solution。

3、单击OK,在出现的Win32 Application Wizard的Overview对话框中点击Next。

4、在Application Settings中,选择Application type下的Console application。

5、取消Additional options下的Precompiled header,勾选Empty project。

6、单击Finish创建项目。

二、添加源码

1、将\trimesh2\gluit\目录下的所有以freeglut_开头的文件拷贝到项目路径\trimesh2\freeglut\之下。注意源码gluit中包含了freeglut库文件和glui库文件,此处仅编译freeglut。

2、单击freeglut项目,将~\trimesh2\freeglut\目录下刚才拷贝的所有.h和.cc文件添加到项目中。

3、单击freeglut项目,选择Add->Existing Item,将~\trimesh2\include\GL目录下的freeglut.h,freeglut_ext.h,freeglut_std.h,glut.h添加到项目中来。

4、 右键单击freeglut项目,选择属性,在VC++ Directories下的Include Directories中添加$(SolutionDir)include。

5、右键单击freeglut项目,选择属性,将Configuration Properties->General下的Output Directory值改为$(SolutionDir)lib。

6、单击应用,确定,添加完毕。

三、编译freeglut库

此时若编译项目,则会出现链接错误: cannot open file ‘freeglut_static.lib’。

解决方法为:将freeglut_std.h 文件头中的宏定义#define FREEGLUT_STATIC注释掉。

重新编译通过,~\trimesh2\lib目录下出现freeglut.lib和freeglut.dll。

因为它总是报错 所以我把这一行和这一行注释掉了
在这里插入图片描述

在这里插入图片描述

但是其实这些东西不编译的话 我是不是可以网上下载的
但是可能和我的电脑配件不兼容?
不管了 先试一下我现在编译出来的行不行

尝试使用

1、将\trimesh2-2.10\trimesh2\utilsrc\下的mesh_view.cc拷贝到~\trimesh2\mesh_view项目目录下。

2、右键单击mesh_view项目并将mesh_view.cc添加到项目。

3、右键单击mesh_view项目,选择属性,在VC++ Directories下的Include Directories中添加$(SolutionDir)include。

4、将Configuration Properties->General下的Output Directory值改为$(SolutionDir)bin。

5、在Linker->Input的Additional Dependencies下添加:$(SolutionDir)lib\freeglut.lib

和$(SolutionDir)lib\trimesh.lib。

单击应用,确定,添加完毕。

三、编译运行

编译项目,在bin目录下生成mesh_view.exe。

\trimesh2\lib\下的freeglut.dll拷贝到\trimesh2\bin\中,将mesh_view项目设置为Set up StartUp Project。Alt+F5运行。

然后就报了这个错
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值