如何使用g ++MSYS2 / MinGW在Windows上根据Google的细丝库编译C ++项目?

如何解决如何使用g ++MSYS2 / MinGW在Windows上根据Google的细丝库编译C ++项目?

对于尝试在Windows上使用 g ++ (MSYS2 / MinGW)编译使用Google's Filament libraryon the Microsoft website的C ++项目时遇到的问题,我一点都不了解。它只是向我吐出大量错误消息(请参见下面的摘录)。我的猜测是缺少MSVCRT,但我不确定。如果是这种情况,我是否应该告诉g ++该库将在运行时通过msvcrt.dll动态提供,因此现在不关心引用?

main.cpp

#include <filament/Engine.h>
#include <filament/SwapChain.h>
#include <filament/Renderer.h>
#include <filament/View.h>
#include <utils/EntityManager.h>

int main()
{}

编译命令:

g++ \
    -std=c++14 -pthread \
    main.cpp \
    -IE:/libraries/filament/1.8.1/include \
    -IE:/libraries/sdl/2.0.12/x86_64-w64-mingw32/include \
    -LE:/libraries/filament/1.8.1/lib/x86_64/mt \
    `E:/libraries/sdl/2.0.12/x86_64-w64-mingw32/bin/sdl2-config --libs` \
    -lfilament -lbackend -lbluegl -lbluevk -lfilabridge -lfilaflat -lutils -lgeometry -lsmol-v -libl \
    -lpthread

它发出1233 KB的邮件。以下是一些摘录:

一开始会有一些太小,无法容纳所有值-错误:

In file included from E:/libraries/filament/1.8.1/include/backend/Platform.h:22,from E:/libraries/filament/1.8.1/include/filament/Engine.h:20,from main.cpp:2:
E:/libraries/filament/1.8.1/include/backend/DriverEnums.h:631:30: warning: 'filament::backend::SamplerParams::<unnamed union>::<unnamed struct>::filterMag' is too small to hold all values of 'enum class filament::backend::SamplerMagFilter'
  631 |             SamplerMagFilter filterMag      : 1;    //!< magnification filter (NEAREST)
      |                              ^~~~~~~~~
E:/libraries/filament/1.8.1/include/backend/DriverEnums.h:632:30: warning: 'filament::backend::SamplerParams::<unnamed union>::<unnamed struct>::filterMin' is too small to hold all values of 'enum class filament::backend::SamplerMinFilter'
  632 |             SamplerMinFilter filterMin      : 3;    //!< minification filter  (NEAREST)
      |                              ^~~~~~~~~
(some more cut out)

接着有40行告诉我:

Warning: corrupt .drectve at end of def file

然后有许多不确定的未定义引用:

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: E:/libraries/filament/1.8.1/lib/x86_64/mt/bluegl.lib(bluegl.dir/Release/BlueGL.obj):(.text$x+0x8): undefined reference to `??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: E:/libraries/filament/1.8.1/lib/x86_64/mt/bluegl.lib(bluegl.dir/Release/BlueGL.obj):(.text$x+0x8): undefined reference to `??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: E:/libraries/filament/1.8.1/lib/x86_64/mt/bluegl.lib(bluegl.dir/Release/BlueGL.obj):(.text$x+0x8): undefined reference to `??1locale@std@@QEAA@XZ'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: E:/libraries/filament/1.8.1/lib/x86_64/mt/bluegl.lib(bluegl.dir/Release/BlueGL.obj):(.text$x+0x8): undefined reference to `??1_Lockit@std@@QEAA@XZ'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: E:/libraries/filament/1.8.1/lib/x86_64/mt/bluegl.lib(bluegl.dir/Release/BlueGL.obj):(.text$x+0x8): undefined reference to `??1?$unique_ptr@V_Facet_base@std@@U?$default_delete@V_Facet_base@std@@@2@@std@@QEAA@XZ'
(many many many more)

其中一些:

undefined reference to `__CxxFrameHandler4'

这使我了解了MSVCRT理论。

我的g ++版本:

$ g++ --version
g++.exe (Rev2,Built by MSYS2 project) 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.

适用于Windows的Binary Filament具有不同的lib版本:mt,md,mtd和mdd,{{3}}进行了解释。我认为mt版本意味着没有静态链接到MSVCRT,因此在编译过程中没有参考问题。也许我在这里误解了一些事情?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-