回答編集履歴

1

詳細説明を追加

2018/09/27 12:39

投稿

katsuko
katsuko

スコア3471

test CHANGED
@@ -7,3 +7,39 @@
7
7
  gcc -o hoge hoge.cpp -static
8
8
 
9
9
  ```
10
+
11
+
12
+
13
+ ---
14
+
15
+ 朝は時間がなかったのでとりあえず対処法だけ書きましたが、一応ちゃんと説明しておきます。
16
+
17
+
18
+
19
+ mingwは、ダイナミックリンク・スタティックリンクのどちらもできるライブラリをリンクした場合、優先的にダイナミックリンクするようになっています。
20
+
21
+ ですので、ライブラリのDLLファイルが、カレントディレクトリか環境変数PATHに設定されているディレクトリに存在しないといけません。
22
+
23
+
24
+
25
+ msysとかのbash上から実行すれば、DLLファイルのある場所にPATHが通っているのでエラーは出ませんが、エクスプローラやコマンドプロンプト上から実行すると質問のようなエラーが出てしまいます。
26
+
27
+
28
+
29
+ それを回避するためには、
30
+
31
+
32
+
33
+ 1. Windowsの環境変数PATHを設定する。
34
+
35
+ 2. 「-static」オプションを指定して、スタティックリンクする。
36
+
37
+ 3. DLLファイルを実行ファイルと同じ場所にコピーする。(でもいいはず…。)
38
+
39
+
40
+
41
+ のいずれかの対処になります。
42
+
43
+
44
+
45
+ ちなみに、「-static-libstdc++」オプションを指定するという話もありますが、このオプションは「libstdc++」のみスタティックリンクする事になり、他のライブラリに対しても別のオプションも必要になってくるので、「-static」オプションを指定したほうが楽です。