のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,836人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレCygwin + MinGW + GCC 相談室 Part 6

    gcc スレッド一覧へ / gcc とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    451 : デフォルトの名無 - 2011/12/12(月) 11:25:49.08 (+34,+6,-36)
    で、もしそうならMinGWで必要なDLLはどうやって入手してもらうのがいいのかと。
    (素人さんに)
    452 : デフォルトの名無 - 2011/12/12(月) 11:28:05.34 (+68,+28,-26)
    >>450
    その類の記述は少しだけみつけたんだけど、staticリンクでまったく全部
    リンクされた状態でOKてことでいいの?
    .dllを使うための.aだけがセーフってことではなく。
    453 : デフォルトの名無 - 2011/12/12(月) 12:34:37.39 (-2,-30,-47)
    454 : デフォルトの名無 - 2011/12/12(月) 12:40:03.74 (+3,-30,-43)
    http://www.wdic.org/w/TECH/libc%2B%2B

    GCC(G++)のライブラリはlibstdc++だが、これはGPLv3であり、GPL離れが加速する中、もはや採用することができない。

    GPLv2ライセンスで提供されるものはGCC 4.2.1のlibstdc++までだが、いつまでもこれを採用し続けることも難しいのが現実である。
    455 : デフォルトの名無 - 2011/12/12(月) 12:59:24.63 (+17,-30,-30)
    んー、MinGW/g++で-sharedで確認すると、
     LIBSTDC++-6.DLL
     LIBGCC_S_DW2-1.DLL
    の2つに依存してるようなんだけど、どう配布するのがいいのか教えてくれw
    (GPLにしたくない、利用者は素人さん)
    456 : 714@C++相 - 2011/12/12(月) 15:35:18.23 (-13,-30,-38)
    誘導されました。
    http://hibari.2ch.net/test/read.cgi/tech/1320339482/714
    について、MinGWの規則の範囲内でわかれば教えてください。

    iconvについても確認してみたところ、
     bin/iconv.dll
     lib/iconv.lib
     lib/iconv_a.lib
    となっており、libxmlと似ていました。「_a_dll.lib」はありませんでしたが…。

    よろしくお願いします。
    457 : デフォルトの名無 - 2011/12/12(月) 15:39:14.42 (+39,+5,+1)
    何故VC++の話をここに持ってくるんだ
    458 : 片山博文MZ ◆ - 2011/12/12(月) 15:43:40.84 (+7,-29,-5)
    *_a.libは、staticライブラリ。
    tinyxmlの方が小さくて使いやすいかもしれない。
    459 : デフォルトの名無 - 2011/12/12(月) 15:59:20.57 (+70,+29,-58)
    Windowsで使うのは骨だと思うけどなあ。
    何かをするたびにエンコーディングの変換をするより、読むとき一度だけ
    変換した方が効率がいいし、手間も少ないし。
    BAD_CASTってあったと思ったけど、ほんとにBAD CASTだからね。
    使えると思わないほうがいい。
    つかたらいいなって思うのはよくわかるんだけど。
    460 : デフォルトの名無 - 2011/12/12(月) 16:03:43.46 (+7,-30,-89)
    >>456
    libxml2.libはlibxml2.dllのインポートライブラリ
    実行時にlibxml2.dllが必要になる

    libxml2_a.libはstaticライブラリ
    実行時にlibxml2.dllは不要

    libxml2_a_dll.libもstaticライブラリ
    実行時にlibxml2.dllは不要
    libxml2_a.libとの違いはxmlDllMain(ビルド環境の際を吸収するための薄い皮)というものが含まれている
    dllを作成するときにはこちらを使うのが望ましい

    大したことやらないならrapidxmlがオススメ
    461 : 456 - 2011/12/12(月) 16:45:06.56 (+13,-29,-107)
    >>457
    すみません。vc++依存の話だとすら知りませんでした。

    >>459
    他に使えるライブラリを探すことに疲れてしまいました。

    >>458 >>460
    rapidxmlは確かに使いやすかったです。tinyxmlは記憶があるので調べたか試したと思います。
    どうしても、属性の値をxpathで取得する必要があって、最初に使えるようになったのがlibxmlでした。
    現在は、dllを使って動いているのですが、静的リンクにしたくて調べていました。

    こちらについても方法をご存知であれば教えていただきたいです。
    調査に疲れてlibxmlをつかうことにしたときと同じように挫折しそうです。
    462 : デフォルトの名無 - 2011/12/12(月) 17:27:10.13 (+6,-29,+0)
    >>461
    xpathかぁ
    それならpugixmlがオススメ
    463 : 456=461 - 2011/12/12(月) 18:57:05.07 (+12,-30,-206)
    >dllを作成するときにはこちらを使うのが望ましい
    ありがとうございます。
    こちらも静的リンクだったとは…。
    差分をとってみるとかなり似ていたので、最適化が面倒だったのかな?
    と見当違いな妄想をしていました。
    逆に、「_a.lib」が必要になる場合ってどのような場合なのでしょう?

    >>462
    「pugixml」しらべてみます。

    なるべく、実行ファイルのみでアプリの形にしたいので、静的リンクを使いたいのですが、
    「_a」付きの「iconv_a.lib」「libxml2_a.lib」を使うにはどうすればいいのでしょうか?
    リンクするライブラリを「libxml2_a.lib」→「libxml2_a.lib」と変えてみて動かなかったのは、>>456に書いたとおりです。
    と書き込もうと思って、もう一度ビルドして出力を眺めていると、
    「MSVCRT.lib」と「LIBCMTD.lib」とが競合している、とのこと。D…?→ぐぐる。
    リリースとデバッグが混じってる?いいのか?→Releaseビルド→正常終了
    (  Д ) ゚ ゚ 
    「pugixml」の後に調べてみます。
    464 : デフォルトの名無 - 2011/12/12(月) 18:57:49.45 (-2,-30,-17)
    ×リンクするライブラリを「libxml2_a.lib」→「libxml2_a.lib」
    ○リンクするライブラリを「libxml2.lib」→「libxml2_a.lib」
    465 : 463=464 - 2011/12/12(月) 19:02:37.52 (-1,-29,-6)
    あ、うそでした、スレ汚し申し訳ありません。
    リリースビルドのリンクが「libxml2.lib」になっていただけでした。
    466 : デフォルトの名無 - 2011/12/12(月) 19:07:25.38 (+47,+29,+0)
    だけだったね
    467 : デフォルトの名無 - 2011/12/12(月) 19:11:14.38 (+2,-25,+1)
    いつまでVC++限定の話続けてるんだよ
    468 : デフォルトの名無 - 2011/12/12(月) 19:35:19.90 (+3,-29,-46)
    ↑の話ってVC++の話なの?

    Eclipseでc++書いてるのだけど、boostを落としてきてビルドして使う際に、
    ~.a
    ~.dll.a
    ってのを
    ~.lib
    ~.dll.lib
    にしないとならないのって何で?
    気にしたこともなかった。
    469 : デフォルトの名無 - 2011/12/12(月) 19:43:33.73 (-1,-29,-5)
    > visual c++でXMLを使いたかったため、windows用のlibxmlというライブラリを落として
    470 : デフォルトの名無 - 2011/12/12(月) 19:53:40.13 (+3,-30,-50)
    VC++でも
    #pragma comment(lib, "~.a")とかつけとけば実行は出来るんじゃあねーかな

    ていうか質問者の人は\win32フォルダ配下のMakefile.msvcを使ったのだろうか?使ってないに100ペリカ
    471 : デフォルトの名無 - 2011/12/12(月) 19:56:57.99 (+0,-27,-11)
    あー、わかった。msvc用のライブラリのバイナリじゃなくて、他のコンパイラでビルドしたバイナリを使ってんだな
    そりゃー動かねーわ
    472 : デフォルトの名無 - 2011/12/12(月) 20:01:54.62 (+32,+14,+0)
    ハズレ
    473 : デフォルトの名無 - 2011/12/12(月) 20:14:27.02 (+57,+29,-4)
    てかよく見たらもう質問終わってたのね
    474 : デフォルトの名無 - 2011/12/12(月) 20:18:37.13 (+0,-29,-16)
    そんなことより>>455教えてくれよー
    static linkして配布すると問題?
    475 : デフォルトの名無 - 2011/12/12(月) 21:01:15.37 (+66,+16,+0)
    馬鹿には無理
    476 : デフォルトの名無 - 2011/12/12(月) 21:23:40.68 (+4,-30,-45)
    >>455
    答えがあるとは限らないけど、

    Licensing Terms | MinGW
    http://www.mingw.org/license

    MinGW-users - Conflicting libstdc++-6.dll requirements, and licensing
    http://mingw-users.1079350.n2.nabble.com/Conflicting-libstdc-6-dll-requirements-and-licensing-td6160814.html
    477 : デフォルトの名無 - 2011/12/12(月) 21:40:58.70 (+66,+29,+1)
    >>475
    そんな、自己紹介しなくとも。
    478 : デフォルトの名無 - 2011/12/12(月) 22:03:54.93 (+0,-29,-9)
    >>455
    libstdc++とlibgccにはGCCのランタイムライブラリに関する例外規定が適用される。
    http://www.gnu.org/licenses/gcc-exception.html
    http://www.gnu.org/licenses/gcc-exception-3.1-faq.html

    でも英語だからよくわかんね。
    479 : デフォルトの名無 - 2011/12/13(火) 06:57:24.94 (+63,+30,-47)
    英語でもよくわからないよ。
    一応、ヘッダーのリンクオーケー、商用オーケーって書いてはあるんだけど、
    何がオーケーなんだかいまいち説明がはっきりしない。
    これ書いた本人もまだ決めてないんじゃないの?
    細かい部分は、訴訟起こす時に決めますみたいな。
    480 : デフォルトの名無 - 2011/12/13(火) 10:57:37.41 (+31,-30,-96)
    dllwrap について教えてください。

    windows7 64bit環境で使用したいのですが、ヘルプを見ると
    --target に指定できるのは、i386-cygwin or i386-mingw32
    しかないようなのですが、64bitの場合でも i386-mingw32
    とすれば問題ないのでしょうか?
     それとも 64bit用の dllwrapがどこかにあるのでしょうか?

    OS : windows7 64bit
    MinGW :mingw-w64-bin_x86_64-mingw_20101002_4.5_sezero.zip
    MSYS :MSYS-1.0.11.exe
    481 : デフォルトの名無 - 2011/12/13(火) 11:08:12.33 (+52,+30,+0)
    482 : デフォルトの名無 - 2011/12/13(火) 19:33:11.78 (-11,-29,+0)
    testes
    483 : デフォルトの名無 - 2011/12/14(水) 14:25:34.43 (+68,+10,-8)
    >何がオーケー
    コードの配布以外何がある?
    484 : デフォルトの名無 - 2011/12/14(水) 15:28:23.77 (+58,+25,+1)
    >>483
    うん
    485 : デフォルトの名無 - 2011/12/15(木) 05:00:32.59 (+19,-30,-33)
    MinGW32でextern "C"で定義してある構造体を返す関数が
    gendefでdefを作ると@4と関数のあとについていて(他の関数には付いていない)
    それからlibを作るとその関数だけVC++からリンクできないのですが
    なにかありますか
    486 : デフォルトの名無 - 2011/12/15(木) 08:26:23.55 (-1,-29,-20)
    struct の値返しは mingw と msvc で互換性がない。
    487 : デフォルトの名無 - 2011/12/15(木) 14:23:52.12 (+4,-30,-121)
    >>485
    //test.h
    #pragma once
    #ifdef __cplusplus
    extern "C" {
    #endif
    struct Data{ int a,b; };
    struct Data getData();
    #ifdef __cplusplus
    }
    #endif

    //test.cpp
    #include "test.h"
    struct Data getData() {
    struct Data d = {123, 456};
    return d;
    }

    //use.cpp
    #include <stdio.h>
    #include "test.h"
    int main() {
    struct Data d = getData();
    printf("d.a=%d d.b=%d\n", d.a, d.b);
    return 0;
    }
    488 : デフォルトの名無 - 2011/12/15(木) 14:26:26.14 (+9,-30,-35)
    gcc -shared -o test.dll test.cpp
    gcc -o usegcc.exe use.cpp -L. -ltest
    gendef test.dll
    lib /def:test.def /machine:x86 /out:test.lib
    cl /Fe"usevc.exe" use.cpp test.lib
    usegcc.exe
    usevc.exe

    うちの環境では問題ないなぁ
    489 : 485 - 2011/12/15(木) 15:35:19.51 (+10,-30,-160)
    >>488
    こうするとダメでした。
    $ cat test.h
    #pragma once
    #ifdef __cplusplus
    extern "C" {
    #endif
    typedef struct { float v[4]; } data_t;
    data_t getData(int a, int b, int c);
    #ifdef __cplusplus
    }
    #endif
    $ cat test.cpp
    #include "test.h"
    data_t getData(int a, int b, int c) {
    data_t d;
    d.v[0] = (float)a;
    d.v[1] = (float)b;
    d.v[2] = (float)c;
    d.v[3] = (float)0;
    return d;
    }
    $ cat use.cpp
    #include <stdio.h>
    #include "test.h"
    int main() {
    data_t d = getData(1, 2, 3);
    printf("d.a=%f d.b=%f\n", d.v[0], d.v[1]);
    return 0;
    }
    490 : デフォルトの名無 - 2011/12/15(木) 16:11:55.94 (+4,-30,-79)
    >>489
    gcc -shared -o test.dll test.cpp -Wl,--output-def,test1.def
    gcc -o usegcc.exe use.cpp -L. -ltest
    lib /def:test.def /machine:x86 /out:test.lib
    cl /Fe"usevc.exe" use.cpp test.lib

    gcc -shared -o test.dll test.cpp
    gcc -o usegcc.exe use.cpp -L. -ltest
    impdef test.def test.dll
    lib /def:test.def /machine:x86 /out:test.lib
    cl /Fe"usevc.exe" use.cpp test.lib
    ならいけるのでgendefの問題かもね
    491 : デフォルトの名無 - 2011/12/16(金) 22:18:26.50 (+34,+16,+0)
    かもね
    492 : デフォルトの名無 - 2011/12/18(日) 23:15:42.83 (+41,+23,+0)
    だね
    493 : デフォルトの名無 - 2011/12/23(金) 20:11:37.95 (-2,-30,-53)
    /mingw32/bin/ld.exe: cannot find -lstdc++
    このエラーはどうやったら直りますか?
    494 : デフォルトの名無 - 2011/12/23(金) 21:47:09.64 (-1,-29,-1)
    g++じゃなくてgcc使ってないか?
    495 : デフォルトの名無 - 2011/12/24(土) 09:03:27.32 (+43,+25,+0)
    うん
    496 : デフォルトの名無 - 2011/12/24(土) 10:12:02.61 (+34,+16,+0)
    497 : デフォルトの名無 - 2012/01/05(木) 19:31:41.76 (+38,+20,+0)
    ふう
    498 : デフォルトの名無 - 2012/01/21(土) 16:31:23.43 (+57,+29,+0)
    うんこしたいんですけど。便所どこですか
    499 : デフォルトの名無 - 2012/01/28(土) 17:04:42.88 (-1,-29,-3)
    cygwin 1.7.xってDOSモード無いの?
    500 : デフォルトの名無 - 2012/01/28(土) 17:18:47.05 (+2,-29,-1)
    DOSモード?
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / gcc スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について