- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 MSYS2 ( msys2-base-i686-20160205.tar.xz
) 在 XP 上编译一个项目。包含的文件之一如下:
/z/path/to/libA/Include/A/B/String.h
反过来,该文件在第 34 行执行:
#include <string.h>
这个文件已经存在,例如:
Z:/msys32/mingw32/i686-w64-mingw32/include/string.h
... Z: 驱动器也是我的代码所在的位置。在我的 g++
编译行,我有 -I Z:/msys32/mingw32/i686-w64-mingw32/include
首先,在大量包含之后,-I /z/path/to/libA/Include/A/B
.但是,当我尝试编译时,编译失败,与String.h
有关.
因此,我通过添加 -v -E
进行了一些检查(“在预处理阶段后停止”)并更改为 -o File.e
在 g++
命令行,并可以在生成的 File.e
中看到这一点:
...
# 34 "Z:/path/to/libA/Include/A/B/String.h" 2
# 1 "Z:/path/to/libA/Include/A/B/string.h" 1
# 35 "Z:/path/to/libA/Include/A/B/String.h" 2
...
据我了解,预处理器来到 Z:/path/to/libA/Include/A/B/String.h
的第 34 行, 看到 #include <string.h>
, 开始寻找 string.h
在当前目录 - 并找到它,即使它不存在于这样的名称下!?事实上,如果我从 MSYS2 bash
外壳:
$ find Z:/path/to/libA/Include/A/B/ -name 'string.h'
... 没有返回任何内容(虽然找到了大写的 String.h
);但是,如果我强制使用非大写或大写名称的列表:
$ ls -la Z:/path/to/libA/Include/A/B/String.h
-rw-r--r-- 1 User None 2885 May 31 09:45 Z:/path/to/libA/Include/A/B/String.h
$ ls -la Z:/path/to/libA/Include/A/B/string.h
-rw-r--r-- 1 User None 2885 May 31 09:45 Z:/path/to/libA/Include/A/B/string.h
...然后它们都被报告为存在?!
我猜这就是“混淆”的原因 g++
,从某种意义上说,它被阻止寻找 string.h
(小写字母)在其他地方/在系统路径中。从那以后,我找到了 Git-windows case sensitive file names not handled properly和:
While NTFS (and some remote filesystems) support case-sensitivity, the NT kernel starting with Windows XP does not support it by default. Rather, you have to tweak a registry setting and reboot. For that reason, case-sensitivity can not be supported by Cygwin, unless you change that registry value.
If you really want case-sensitivity in Cygwin, you can switch it on by setting the registry value
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive
to 0 and reboot the machine.
...我这样做了,但我仍然遇到同样的问题;不确定这是否是因为我在 MSYS2(不是 Cygwin)上使用 MINGW;或者因为像 Enable case sensitive behavior with Windows XP and Interix Subsystem or SFU 这样的资源引用HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Kernel\ObCaseInsensitive
(注意,大写);但是,我已经有了这些 key (我只是将其设置为 0,然后重新启动),并且它们带有微小的字母,就像在 cygwin.com 链接中一样。此外,重启后进行测试,这也没有帮助。
同时 How can I make MinGW case-sensitive for included header file names表示这可能无法解决 - 我能做些什么来解决这个问题,并说服 g++
阅读string.h
从系统位置?我已经尝试在不同的机器上构建相同的库,Windows 7 或 8 远程桌面,使用相同的 MingW 版本 - 所以应该可以做一些事情......
最佳答案
添加-I Z:/msys32/mingw32/i686-w64-mingw32/include
到命令行的开头不起作用,因为该目录已经在 GCC 的系统包含目录列表中。我不确定为什么,但这是 GCC 记录的行为。
最好的解决方案是重命名该库中的头文件,并重命名所有尝试使用它的包含。或者,使用 -I /z/path/to/libA/Include/
连同 #include <A/B/String.h>
. #include
中的文件夹名称指令将确保包含库 header 而不是系统 header 。
关于c++ - MSYS2 区分大小写并包含在 XP 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37662307/
我有一个类似于以下的结构。 class A { string title; List bItem; } class B { int pric
本地流 和 远程流 两者都是“媒体流列表 ”。 本地流 包含“本地媒体流 ” 对象 但是,远程流 包含“媒体流 ” 对象 为什么差别这么大? 当我使用“本地流 “- 这个对我有用: localVide
我正在尝试将 8 列虚拟变量转换为 8 级排名的一列。 我试图用这个公式来做到这一点: =IF(OR(A1="1");"1";IF(OR(B1="1");"2";IF(OR(C1="1");"3";I
我正在使用面向对象编程在 Python 中创建一个有点复杂的棋盘游戏的实现。 我的问题是,许多这些对象应该能够与其他对象交互,即使它们不包含在其中。 例如Game是一个对象,其中包含PointTrac
有没有办法获取与 contains 语句匹配的最深元素? 基本上,如果我有嵌套的 div,我想要最后一个元素而不是父元素: Needle $("div:contains('Needle')")
出于某种原因,我无法在 Google 上找到答案!但是使用 SQL contains 函数我怎么能告诉它从字符串的开头开始,即我正在寻找等同于的全文 喜欢 'some_term%'。 我知道我可以使用
我正在尝试创建一个正则表达式来匹配具有 3 个或更多元音的字符串。 我试过这个: [aeiou]{3,} 但它仅在元音按顺序排列时才有效。有什么建议吗? 例如: 塞缪尔 -> 有效 琼 -> 无效 S
嘿所以我遇到了这样的情况,我从数据库中拉回一个客户,并通过包含的方式包含所有案例研究 return (from c in db.Clients.Include("CaseStudies")
如果关键字是子字符串,我无法弄清楚为什么这个函数不返回结果。 const string = 'cake'; const substring = 'cak'; console.log(string.in
我正在尝试将包含特定文本字符串的任何元素更改为红色。在我的示例中,我可以将子元素变为蓝色,但是我编写“替换我”行的方式有些不正确;红色不会发生变化。我注意到“contains”方法通常写为 :cont
我想问一下我是否可以要求/包含一个语法错误的文件,如果不能,则require/include返回一个值,这样我就知道所需/包含的文件存在语法错误并且不能被要求/包含? file.php语法错误 inc
我想为所有包含youtube链接的链接添加一个rel。 这就是我正在使用的东西-但它没有用。有任何想法吗? $('a [href:contains(“youtube.com”)]')。attr('re
我正在尝试在 Elasticsearch 中查询。除搜索中出现“/”外,此功能均正常运行。查询如下所示 GET styling_rules/product_line_filters/_search {
我正在开发名为eBookRepository的ASP.NET MVC应用程序,其中包含在线图书。 电子书具有自己的标题,作者等。因此,现在我正在尝试实现搜索机制。我必须使用Elasticsearch作
我已阅读Firebase Documentation并且不明白什么是 .contains()。 以下是文档中 Firebase 数据库的示例规则: { "rules": { "rooms"
我的问题是我可以给出条件[ 'BookTitleMaster.id' => $xtitid, ] 如下所示 $bbookinfs = $this->BookStockin->BookIssue->fi
我需要能够使用 | 检查模式在他们中。例如,对于像“dtest|test”这样的字符串,像 d*|*t 这样的表达式应该返回 true。 我不是正则表达式英雄,所以我只是尝试了一些事情,例如: Reg
我想创建一个正则表达式来不匹配某些单词... 我的字符:var test = "é123rr;and;ià456;or;456543" 我的正则表达式:test.match(\((?!and)(?!o
我在 XSLT 中有一个名为 variable_name 的变量,如果相关产品具有名称为 A 或 B 或两者均为 A & 的属性,我将尝试将其设置为 1 B.
您好,我想让接待员和经理能够查看工作类型和费率并随后进行更新。但是技术人员只能查看不能更新。该图是否有效? 我读到扩展用例是由发起基本用例的参与者发起的。我应该如何区分技术人员只能启动基本案例而不能启
我是一名优秀的程序员,十分优秀!