操作系统:win11 专业版
gcc: gcc (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0
编辑器:vscode
在c中使用正则表达式
从其他地方下载正则表达式库即可。
http://gnuwin32.sourceforge.net/packages/regex.htm
(请仔细阅读页面信息 尤其是它的位数信息)
两种解决办法
一种直接把 下载的内容放到当前文件夹,然后使用相对路径include。
另外一种则是配置c_cpp_properties.json文件。
{
"configurations": [
{
"name": "windows-gcc-x64",
"includePath": [
"${workspaceFolder}/**",
"F:/Compilers/regex/include"//添加了正则表达式库
],
"compilerPath": "D:/CodeBlocks/MinGW/bin/gcc.exe",
"cStandard": "${default}",
"cppStandard": "${default}",
"intelliSenseMode": "windows-gcc-x64",
"compilerArgs": [
""
]
}
],
"version": 4
}
修改生成任务文件,添加lib所在目录文件和lib
别添加多了,只添加 regex.lib
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 生成活动文件",
"command": "D:/CodeBlocks/MinGW/bin/gcc.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
//include头文件
"-I",
"F:/Compilers/Regex/include/",
//预编译好的lib和dll的位置 包不大就直接静态了
"-L",
"F:/Compilers/Regex/bin/",
"-l",
"regex2",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
""
],
"options": {
"cwd": "D:/CodeBlocks/MinGW/bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "编译器: D:/CodeBlocks/MinGW/bin/gcc.exe"
}
]
}
找了半天天问题,一度怀疑是命令错误,因此查了一堆资料,但是还是没找到。。。。
所以我决定先能正常使用了再去看命令咋写。
所以我决定使用VS去进行库的导入。
稍微搜索一下,即可配置。(搜索关键词 VS C 导入 静态链接库 动态链接库)
可是当我配置完查看命令行的时候,才想起来,VS用的不是GCC,是MSVC
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!!!
所以那些命令其实根本没啥用。我要是在VSCODE中用微软的MSVC,还不如直接用VS搞。
于是我就又开始调试,看错误
终于我发现了
我看到这个skip 就感觉很奇怪,为啥跳了呢?
仔细一搜,发现这句话的意思是,因为regex2.dll的位数不匹配,所以自动忽略了它。
嗯?
于是我去查看了regex2.dll的位数
方法可参考这篇博文
https://blog.csdn.net/BigData_Mining/article/details/115444969
发现,我下的dll是32位,但是我的gcc是64位的
生成的程序默认64,所以就给我忽略了。
所以就没找到。
我仔细思考了一下,认为现在有4种解决办法
最省事的一种,管他那么多,人生苦短,我用VS
理由同上,我的目的是写一个词法分析器,用c只是觉得效率更高。。。
很难找,而且之后还会不会有问题我也不知道
上面那个网站除了zip,还提供了源码,所以其实是可以下载下来然后自己做一个dll的。
这个我通过-m32试了试,还有一堆报错,没心查了