1

SOコミュニティの 助けを借りて、最初のMySQLベースのファイルをC++で実行することに成功しました。次のステップは、ApacheでCGIファイルとして実行することです。Apacheでは500の内部サーバーエラーが発生し、サーバーログでは次のようになります。

Sat Jan 19 12:18:18 2013] [notice] caught SIGTERM, shutting down
[Sat Jan 19 12:18:23 2013] [notice] Digest: generating secret for digest authentication ...
[Sat Jan 19 12:18:23 2013] [notice] Digest: done
[Sat Jan 19 12:18:23 2013] [notice] Apache/2.0.63 (Unix) PHP/5.3.2 DAV/2 configured -- resuming normal operations
[Sat Jan 19 12:18:51 2013] [error] [client 127.0.0.1] Premature end of script headers: addproduct.cgi

次の手順を実行しました

1- netbeansによって生成されたDEBUGフォルダーに移動し、addproduct.oファイルの名前をaddproduct.cgiに変更しました。

2- htdocs /myappfolder/にコピーしました

私のファイルはMySQLとBoostのライブラリを使用していますが、同じ理由でエラーが発生していると思います。インクルードライブラリをCGIとリンクする方法を知りたいですか?

MySQL Connector /C++に付属するC++コードを以下に示します。

更新:パスをいじった後、次のエラーが発生します。

インベントリdyld:ライブラリがロードされていません:libmysqlcppconn.6.dylib
参照元:/Applications/MAMP/htdocs/inventory/Inventory/dist/Debug/GNU-MacOSX/./inventory理由:イメージが見つかりませんトレース/ BPTトラップhttp:// pastie.org/5723836

otoolは次の情報を提供します。

otool-LMVインベントリ

inventory:
    libmysqlcppconn.6.dylib (compatibility version 6.0.0, current version 6.1.1)
    time stamp 2 Thu Jan  1 05:00:02 1970
    /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
    time stamp 2 Thu Jan  1 05:00:02 1970
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
4

1 に答える 1

1

間違ったファイルを使用しているようです。.oファイルは、コンパイルの結果であるがリンクされていないオブジェクトファイルです。netbeansは、拡張子のないaddproductというファイルも生成していると思います。これは、apacheから呼び出すことができる実行可能ファイルです。

PS C ++とCGIに真剣に取り組んでいる場合は、fastcgiを確認することをお勧めします。

于 2013-01-19T07:50:12.807 に答える