14310


C++で、コンソールアプリケーションを作成しました。  
VisualStusio Express 2015で作成し、  
cygwinからg++でコンパイルしました。

[code]

    g++ Main.cpp DomParser.cpp OperationService.cpp CommonsUtil.cpp -o test.exe
     -lxml2 -liconv -L ../packages/libxml2.2.7.8.7/build/native/lib
     -L ../packages/libiconv.1.14.0.11/build/native/lib
     -I ../packages/libxml2.2.7.8.7/build/native/include
     -I ../packages/libiconv.1.14.0.11/build/native/include
     -std=c++11
    
[/code]

上記コマンドでビルドし、正常に動作することを確認し、  
他の環境へ配布したんですが、他のPC上での動作を確認できませんでした。  
./text.exe -h  
でヘルプ情報を表示する機能を付随してあるんですが、(cout << しているだけです。)  
それも動かず、ログもなにもでない始末です。(一切反応がありません)

以下、一部伏字ですが私の環境と他人の環境の違いです。

開発者の環境

[code]

    user@host /cygdrive/c/略
    $ ./test -h
    -i [--init]           略
                          略
    
    -h [--help]           略
    -a [yyyy/MM/dd]       略
    
    -d                    略
    -p                    略
    -e [yyyy/MM/dd]       略
    -o [yyyy/MM/dd]       略
    -k [yyyy/MM/dd]       略
    -f [yyyy/MM/dd]       略
    -t                    略
    -s [yyyy/MM/dd]       略
    -c                    略
    
[/code]

他人の環境

[code]

    user@host /cygdrive/c/略
    $ ./test -h
    
    $
    
[/code]

リモートリポジトリにソースをアップし、他のPCからclone,g++でビルドしようとしても、エラーが発生しておりました。  
libxmlやlibiconvが見つからないようなエラーでしたが、依存関係のディレクトリごとリモートのプッシュしたので、ないはずはないです。

ご教授お願いします。

追記

「他人」が皆帰ってしまったので、自宅に帰って試してみました。  
自宅PCはcygwinが壊れていたので、OS(win8.1)ごと入れ直し、一番にcygwinを入れ、外部サーバーから.exeのみダウンロードし実行してみたところ動いてしまいました。  
明日、別のPCから試行してみますが見比べられるよう動作環境でのcygcheckを記します。

[code]

    $ cygcheck ./test.exe
    C:\Users\略\Downloads\test.exe
      C:\cygwin64\bin\cygwin1.dll
        C:\WINDOWS\system32\KERNEL32.dll
          C:\WINDOWS\system32\api-ms-win-core-rtlsupport-l1-2-0.dll
          C:\WINDOWS\system32\ntdll.dll
          C:\WINDOWS\system32\KERNELBASE.dll
            C:\WINDOWS\system32\api-ms-win-core-apiquery-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-processthreads-l1-1-2.dll
          C:\WINDOWS\system32\api-ms-win-core-registry-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-heap-l1-2-0.dll
          C:\WINDOWS\system32\api-ms-win-core-memory-l1-1-2.dll
          C:\WINDOWS\system32\api-ms-win-core-handle-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-synch-l1-2-0.dll
          C:\WINDOWS\system32\api-ms-win-core-file-l1-2-1.dll
          C:\WINDOWS\system32\api-ms-win-core-delayload-l1-1-1.dll
          C:\WINDOWS\system32\api-ms-win-core-io-l1-1-1.dll
          C:\WINDOWS\system32\api-ms-win-core-job-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-threadpool-legacy-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-threadpool-private-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-libraryloader-l1-2-0.dll
          C:\WINDOWS\system32\api-ms-win-core-namedpipe-l1-2-0.dll
          C:\WINDOWS\system32\api-ms-win-core-datetime-l1-1-1.dll
          C:\WINDOWS\system32\api-ms-win-core-sysinfo-l1-2-1.dll
          C:\WINDOWS\system32\api-ms-win-core-timezone-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-localization-l1-2-1.dll
          C:\WINDOWS\system32\api-ms-win-core-processenvironment-l1-2-0.dll
          C:\WINDOWS\system32\api-ms-win-core-string-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-debug-l1-1-1.dll
          C:\WINDOWS\system32\api-ms-win-core-errorhandling-l1-1-1.dll
          C:\WINDOWS\system32\api-ms-win-core-fibers-l1-1-1.dll
          C:\WINDOWS\system32\api-ms-win-core-util-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-profile-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-security-base-l1-2-0.dll
          C:\WINDOWS\system32\api-ms-win-security-appcontainer-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-comm-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-realtime-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-wow64-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-systemtopology-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-processtopology-l1-2-0.dll
          C:\WINDOWS\system32\api-ms-win-core-namespace-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-file-l2-1-1.dll
          C:\WINDOWS\system32\api-ms-win-core-xstate-l2-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-localization-l2-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-normalization-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-localization-private-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-sidebyside-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-appcompat-l1-1-1.dll
          C:\WINDOWS\system32\api-ms-win-core-windowserrorreporting-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-console-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-console-l2-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-psapi-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-psapi-ansi-l1-1-0.dll
          C:\WINDOWS\system32\api-ms-win-core-psapi-obsolete-l1-1-0.dll
      C:\cygwin64\bin\cygxml2-2.dll
        C:\cygwin64\bin\cygiconv-2.dll
        C:\cygwin64\bin\cygz.dll
      C:\cygwin64\bin\cyggcc_s-seh-1.dll
      C:\cygwin64\bin\cygstdc++-6.dll
    
[/code]

以下、非動作環境のcygcheckです。

[code]

    C:\Users\略\Downloads\test.exe
      C:\cygwin64\bin\cygwin1.dll
        C:\Windows\system32\KERNEL32.dll
          C:\Windows\system32\API-MS-Win-Core-RtlSupport-L1-1-0.dll
          C:\Windows\system32\ntdll.dll
          C:\Windows\system32\KERNELBASE.dll
          C:\Windows\system32\API-MS-Win-Core-ProcessThreads-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-Heap-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-Memory-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-Handle-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-Synch-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-File-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-IO-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-ThreadPool-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-LibraryLoader-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-NamedPipe-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-Misc-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-SysInfo-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-Localization-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-String-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-Debug-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-ErrorHandling-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-Fibers-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-Util-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Core-Profile-L1-1-0.dll
          C:\Windows\system32\API-MS-Win-Security-Base-L1-1-0.dll
      C:\cygwin64\bin\cygxml2-2.dll
        C:\cygwin64\bin\cygiconv-2.dll
        C:\cygwin64\bin\cyglzma-5.dll
        C:\cygwin64\bin\cygz.dll
      C:\cygwin64\bin\cyggcc_s-seh-1.dll
      C:\cygwin64\bin\cygstdc++-6.dll
    
[/code]

-vオプションについてはいまいち意味が理解できなかったので行っておりません。  
おそらく.exeの引数として渡されてしまうかと思います。


CC BY-SA 3.0
2015-08-11T10:28:52.773
14277
2015-08-12T04:46:57.967
2015-08-12T01:20:55.890
8396
8396
question
c++
C++のコンソールアプリケーションが動かない


実行時に

[code]

    ./test -h
    
[/code]

を

[code]

    test -h
    
[/code]

としてませんか？  
Unix環境には `test` コマンドがあるので ./ を忘れた場合エラーにならず、この`test` コマンドが実行されます。  
ありがちなミスなので、`test` というコマンドを作るのは避けるのが習わしになっています。


CC BY-SA 3.0
2015-08-11T14:03:39.680
14289
2015-08-11T14:03:39.680
3054
14277
answer


cygwinでコンパイルした場合、そのままだと`cygwin.dll`が必要になります。  
ほかの方の環境にはcygwinがインストールされていないのではないですか？

gcc3まではcygwin依存をなくすためにコンパイル時に`-mno-cygwin`を指定していましたが  
gcc4では64bit環境ならば`i686-w64-mingw32-gcc`でコンパイルする必要があります。

<http://takuya-1st.hatenablog.jp/entry/20120614/1339702326>


CC BY-SA 3.0
2015-08-12T00:18:31.680
14299
2015-08-12T00:18:31.680
7214
14277
answer


解決しました。

私自信、Cに関する知識が貧しかったため、気付くことができませんでした。  
結果としては、cygwinのインストーラーから、gcc関連のパッケージをインストールしました。

開発環境ではコンパイルにgccを使うので必要だと思いインストールしており、  
自宅の環境でも「そのうち開発環境作るだろうから」とインストールしていました。  
exeの実行のみの環境でもgccが必要だと思っていなかったため、実行できなかったようです。

お騒がせいたしました。


CC BY-SA 3.0
2015-08-12T04:46:57.967
14310
2015-08-12T04:46:57.967
8396
14277
answer