OpenCL 1.1 Undefined Reference с использованием оболочек C ++

0

Я пытаюсь скомпилировать проект OpenCL в Eclipse с помощью компилятора Cygwin Gcc/G++, и я получил некоторые Неопределенные ссылки на функции OpenCL API. Я видел много потоков об этой проблеме, я пробовал предлагаемые решения, но у меня все еще есть эти ошибки.

В основном мой код просто извлекает информацию OpenCL о платформе и устройстве, которое я использую, поэтому я не даю его здесь, но могу, если вы хотите (даже если я не думаю, что это очень интересно).

Вот мой makefile:

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 (но компилятор их не находит)... Генерация make файла Eclipse вызывает больше ошибок, поэтому мне пришлось переписать его...

Надеюсь, у кого-то есть ответ: p

Батист

Теги:
gcc
opencl
cygwin

1 ответ

0
Лучший ответ

Вы злоупотребляете коммутаторами компилятора. Прочтите руководство GCC для получения дополнительной информации.

С помощью -L вы должны -L путь к каталогу поиска библиотек. В вашем случае, где libOpenCL.a или OpenCL.a. Например:

-LD:/Libraries/OpenCL/lib

С помощью -L вы указываете библиотеку, с которой хотите связать. В вашем случае это будет libOpenCL.a или OpenCL.a. Как это:

-lOpenCL

Порядок правильный. Другими словами, вы должны хранить эти -L переключатели после всех *.o файлов (при вызове g++ для стадии linkage), если эти файлы *.o зависят от библиотек, указанных в -L, что в вашем случае действительно верно.

  • 0
    хорошо, у меня была эта -LLIB_DIRECTORY раньше с моими -lLIB1 и -lLIB2 (это libOpenCL.so и libGAL-fb.so), но мой компилятор не смог их найти. Затем я попытался с -L, и у меня больше не было сообщений об ошибках. Это странно, потому что любой поток в Интернете сказал, что это должен быть -lOpenCL для libOpenCL.so, но мне так и не удалось это сделать ...
  • 0
    Мое предложение работает для вас сейчас?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню