Который делают библиотеки необходимо связаться против для программы лязга с помощью блоков

Я обнаружил (ниже) этого, я должен использовать-fblocks при компиляции кода, который использует блоки.

Против какой библиотеки я должен связаться позволить компоновщику разрешить _NSConcreteStackBlock? (На Ubuntu 9.10 AMD64.)

chris@chris-desktop:~$ clang ctest.c 

ctest.c:3:25: error: blocks support disabled - compile with -fblocks or pick a
      deployment target that supports them
void call_a_block(void (^blockptr)(int)) {
                        ^
ctest.c:11:19: error: blocks support disabled - compile with -fblocks or pick a
      deployment target that supports them
    call_a_block( ^(int y) { 
                  ^
2 diagnostics generated.
chris@chris-desktop:~$ clang ctest.c -fblocks
/tmp/cc-4sPSeO.o: In function `main':
ctest.c:(.text+0x79): undefined reference to `_NSConcreteStackBlock'
collect2: ld returned 1 exit status
clang: error: linker command failed with exit code 1 (use -v to see invocation)
5
задан fadedbee 17 September 2011 в 04:48
поделиться

1 ответ

Clang пока не предоставляет простой способ использования блоков на платформах, которые не имеют встроенной поддержки операционной системы (например, SnowLeopard). Вы можете найти дополнительную информацию о проекте libdispatch здесь: http://libdispatch.macosforge.org/ и о проекте compiler-rt (который предоставляет блоки runtime) здесь: http://compiler-rt.llvm.org/ , но это еще не очень хорошо упаковано для конечных пользователей Clang.

Если вы хотите немного покопаться, в проекте compiler-rt действительно есть среда выполнения блоков, и вы можете использовать ее для создания библиотеки, которая предоставит NSConcreteStackBlock.

5
ответ дан 14 December 2019 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: