赞
踩
我想要运行草图提取的应用的源码
但是它的源码只有一个C文件
然后它说要使用这个文件需要依赖trimesh2这个库
您还需要最新版本的 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 进行编译。
该代码是用 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库的github地址
我下载了一个预编译版本
里面有
感觉东西很全的样子
我觉得应该把include文件放到项目目录里去
把lib文件放到库目录里去
然后编译项目
但是这样做之后会报错
然后我按照这个链接在 属性配置管理–》》链接器—》》输入–》》附加依赖项 中,debug|x64 加上了trimesh.lib
然后就报这个错
所以我觉得应该是 他预编译的库的代码在我的电脑上不能用
报错说
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版本的问题?
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.
使用makefile
makefile的编写原理基础
如何安装minGW
用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文件即可。
一、创建项目
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文件,则编译成功。
一、创建项目
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运行。
然后就报了这个错
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。