1

わかりました。私は Visual Studio Express 2013 を使用して Pure Data のエクスターナルを開発してきましたが、すべて順調に進んでいます。すべてがコンパイルされ、動作します。

しかし今、私は Android (libPD で使用するため) の外部の特定のコンパイルを行う必要があることに直面しています。つまり、Android NDK を使用する必要があります。私が見つけた NDK のガイドはすべて Eclipse を使用しているため、コードを Eclipse に取り込んで作業を開始することにしました。

私は以前、Android dev でいくつかの試みのために Eclipse をインストールしていました。つまり、Make、Gcc、および Gdb をインストールするだけで済みました。Cygwin 経由で実行し、Eclipsed を再起動すると、すべて正常に動作するように見えました (空のプロジェクトをコンパイルしようとすると、すべての呼び出しがエラーなしで行われ、プロジェクトがコンパイルされます)。

基本的な「helloworld」プロジェクト ソースを新しく作成された Eclipse C プロジェクトにインポートし、「m_pd.h」をインクルードしようとすると (予想どおり) エラーが発生しました。ライブラリのインクルードについて Google と Eclipse のドキュメントを検索し、インクルード パス、ライブラリ パス (リンカー -> ライブラリ設定) で試してみましたが、インクルード パスに追加する以外に、他のソリューションとうまく連携させることができません。Pure Data src フォルダーをプロジェクトのインクルード パスに追加すると、エラーがなくなりました。

ただし、プロジェクトをコンパイルしようとすると、すべての PD メソッドと関数で未定義の参照エラー (post、pd_new、gensym など) が発生し、コンパイラがライブラリに正しく到達できないことを示しています...

まったくの Eclipse 初心者ユーザーとして、何か手順を間違えたのではないか、何か間違ったことをしたのではないかと考えています...

内部コンパイラと外部コンパイラのどちらでも同じエラーが発生するようです。外部 (cygwin gcc) がリンク段階でエラーを表示する (「Invoking: Cygwin C Linker」行の後)

更新: インクルード パスを cygwin リンカ ライブラリ パスに追加した後、コンパイル エラーが消えました。makefile コマンドで「予期しないトークン `(' に近い構文エラー」エラーが発生するようになりました: gcc -shared -o "dataIn.dll" ./src/dataIn.o -lC:/Program\ Files\ (x86)/Pure\ Data/ソース

パスに「(」が含まれているため、make がおかしくなっていますか?

4

2 に答える 2

1

gcc と GNU make は、インクルード パス内のスペースの扱いが悪いという評判があります。

短い答えは: しないでください!

スペース、括弧、アスタリスク、恐ろしいAUX. 例えば

C:\Pd\
于 2015-04-21T19:25:21.357 に答える
0

記録のために、誰かがこの質問に出くわした場合、問題はCygwinを使用していたことです.Cygwinでコンパイルされたものを実行するにはdll(cygwin1.dll)が必要です。MingWの使用に切り替えることになり、すべてが正常に機能しました。

ファイル パスとディレクトリに関するウムラウテの提案は、正しいコンパイルを保証するためにも非常に重要です。

于 2015-08-24T09:17:46.840 に答える