0

Cygwin Gcc/G++ コンパイラを使用して Eclipse で OpenCL プロジェクトをコンパイルしようとしていますが、OpenCL API 関数の未定義の参照がいくつかあります。この問題について多くのスレッドを見ました。提案された解決策を試しましたが、まだこれらのエラーがあります。

基本的に、私のコードは私が使用しているプラ​​ットフォームとデバイスに関する OpenCL 情報を取得するだけなので、ここでは提供しませんが、必要に応じて提供できます (あまり興味深いとは思わない場合でも)。

ここに私のメイクファイルがあります:

RM := rm -rf

OpenCLEnvInfos.o: ../OpenCLEnvInfos.cpp
       g++ -IINCLUDE_DIR1 -IINCLUDE_DIR2 -g3 -Wall -c ../OpenCLEnvInfos.cpp -o     OpenCLEnvInfos.o
       @echo ' '

OpenCL_infos.o: ../OpenCL_infos.cpp    
       g++ -IINCLUDE_DIR1 -IINCLUDE_DIR2 -g3 -Wall -c ../OpenCL_infos.cpp -o OpenCL_infos.o
       @echo ' '

# All Target
all: OpenCLEnvInfos.exe

# Tool invocations
OpenCLEnvInfos.exe: OpenCLEnvInfos.o OpenCL_infos.o
       g++ -o OpenCLEnvInfos.exe OpenCLEnvInfos.o OpenCL_infos.o -LOpenCL -LGAL-fb
       @echo ' '

# Other Targets
clean:
       -$(RM) OpenCLEnvInfos.o OpenCL_infos.o OpenCLEnvInfos.d OpenCL_infos.d     OpenCLEnvInfos.exe
       @echo ' '

私はすべてを試しました(コマンドをリンクする際のLibsの順序)、-Lの代わりに-l(ただし、コンパイラーはそれらを見つけられません)... Eclipseのmakefileの生成により、より多くのエラーが発生するため、書き直さなければなりませんでした...

誰かが答えてくれることを願っています:p

バティスト

4

1 に答える 1

0

コンパイラ スイッチの誤用。詳細については、GCC のマニュアルを参照してください。

ライブラリを検索するディレクトリへのパスを指定-Lする必要があります。あなたの場合、libOpenCL.aまたはどこにあるかOpenCL.a。例えば:

-LD:/Libraries/OpenCL/lib

リンクするライブラリを指定し-lます。あなたの場合、それはlibOpenCL.aorになりOpenCL.aます。このような:

-lOpenCL

順番は正しいです。言い換えれば、これらのファイルが によって指定されたライブラリに依存している場合、すべてのファイルの後に(リンケージ ステージの呼び出しで) これらの-lスイッチを保持する必要があります。*.og++*.o-l

于 2013-10-14T16:51:08.473 に答える