

MinGW 環境(Windows)でC言語のプログラムを書いています。  
コンパイラーは gcc です。

<https://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-
regex-2.5.1/>

（09/12 14:39追記）正しくはこちらのリンクからダウンロードしました。  
<https://sourceforge.net/projects/gnuwin32/files/regex/2.7/regex-2.7-lib.zip/download>

上記URLからダウンロードした regex に関するフォルダをプログラムの階層に入れて以下の通り実行しましたが、linkage phase
にてエラーが出てしまいます。

解決法をご存じでしたら、教えていただけないでしょうか。

[code]

    gcc -I .\regex\include\ -L .\regex\lib\  main.c
    
    C:\Users\*\AppData\Local\Temp\cc8JbHKz.o:main.c:(.text+0x17): undefined reference to `__imp_regfree'
    collect2.exe: error: ld returned 1 exit status
    
[/code]


CC BY-SA 4.0
2023-09-12T02:21:25.233
96188
2023-09-13T00:26:39.247
2023-09-12T05:45:00.363
59753
59753
question
windows c mingw
MinGW 環境にて regex を使用したい！(link エラー)


ライブラリファイル名の先頭の `lib` と 最後の `.a` を省略して `-l` オプションに指定するので、おそらく、  
`gcc -I.\regex\include\ -L.\regex\lib\ main.c -lregex.dll`

でしょうか。


CC BY-SA 4.0
2023-09-12T05:26:55.170
96190
2023-09-12T05:26:55.170
3475
96188
answer


`skipping incompatible` の原因はいっぱいあって悩ましいのですが

可能性１： `x86` と `x64` の不整合  
あなたのダウンロードしたファイルは `x86` 用のようです。  
あなたが使っているのが `mingw` (`x86`) でなくて `mingw-w64` (`x64`)
であるなら違うファイルをダウンロードしなければなりません。

可能性２： `cygwin` つか ELF 系と `mingw` つか COFF 系の不整合  
オイラは `cygwin` の人なので `mingw` は眼中にないのですが、あなたのダウンロードした zip 中の `regex.lib` は COFF
つまり Visual C/C++ (x86) 用のようです。 mingw って COFF を GNU ld から使おうとする関係で `gcc
-I../include regextest1.c -L../lib -lregex.dll` のように起動するはず。コマンドラインで
`-lregex.dll` と指定すると `libregex.dll.a` というファイルを探すのが UNIX 系 `ld` の仕様っス。

なので上記２点をチェック（もしかしたら両方にハマっているパターンかも）

あとあなたのダウロードしたファイルは **開発用** ファイルしか入っていないみたいです。 **実行用** に別途 `regex2.dll`
なるファイルが必要ですが、この `zip` ファイルには入っていない様子。

Visual Studio 2019 の `x86 Native Tools Command Prompt for VS2019` 窓で

[code]

    cl -nologo -utf-8 -Iinclude regtest.c lib/regex.lib
    
[/code]

とすればリンクは成功しますが、実行するとよく見る `regex2.dll が見つからないため、コードの実行を継続できません`
エラー窓が表示されてしまいます。

C++11 以上が使える状況なら、古い `<regex.h>` などポイして C++ 標準の `<regex>` に切り替え推奨。


CC BY-SA 4.0
2023-09-13T00:26:39.247
96196
2023-09-13T00:26:39.247
8589
96188
answer