2009-09-29 3 views
3

Я пытаюсь создать libdecodeqr на mac. Мое построение C++ и привязка истории - все на окнах, поэтому это захватывающее путешествие открытия.Неопределенный символ _main при попытке создания общей библиотеки g ++/mac

Я, наконец, добрался до точки, где хочу создать связанную библиотеку. Команда, которую я бегу это:

g++ -shared -o libdecodeqr.so.0.9.3 bitstream.o codedata.o container.o ecidecoder.o formatinfo.o galois.o imagereader.o libdecodeqr.o -L/opt/local/lib -arch i386 -lcxcore -lcv 

Результат:

Undefined symbols: 
    "_main", referenced from: 
     start in crt1.10.5.o 

Я был под впечатлением, что создание библиотеки, используя -shared флаг означал, что я не должен нуждаться в основную функцию. В исходном коде определенно нет.

Просто для ударов я добавил int main() {return 0;} в один из файлов cpp и перестроен. Все это скомпилировано и связано, но когда я попытался использовать вывод в качестве библиотеки, у меня появились ошибки, говорящие мне, что я не могу ссылаться на основной исполняемый файл. Это разумно, я думаю.

Есть ли что-то еще, что мне нужно передать g ++, чтобы рассказать об этом, чтобы построить библиотеку?

ответ

7

-shared не поддерживается на OSX. Используйте либо -dynamiclib, либо -bundle (в зависимости от типа разделяемой библиотеки, которую вы хотите создать).

+0

Perfect, спасибо. –

Смежные вопросы