LINUX.ORG.RU

ld и #include<>


0

0

Доброго времени суток всем. Проблема такая: собираю дл-ку, создаю объектный файл:

g++ -c $(INDLL).cpp

потом пытаюсь сделать из него собственно DLL:

g++ -shared -o $(OUTDLL).dll $(INDLL).o

или

ld -shared -o $(OUTDLL).dll $(INDLL).o

Если в дл-ке есть, например, #include <iostream>, то второй вариант ругается на

dll.o(.text+0xd):dll.cpp: undefined reference to `std::string::size() const'

Как заставить это работать, подскажите, пжалста.

anonymous

>ld -shared -o $(OUTDLL).dll $(INDLL).o

>Если в дл-ке есть, например, #include <iostream>, то второй вариант ругается на dll.o(.text+0xd):dll.cpp: undefined reference to `std::string::size() const'

>Как заставить это работать, подскажите, пжалста.

Вот так:

ld -shared -o $(OUTDLL).dll $(INDLL).o -lstdc++

Sectoid ★★★★★
()
Ответ на: комментарий от Sectoid

Теперь получилось

/mingw/lib/libstdc++.a(globals_io.o)(.text+0x2e): undefined reference to `_imp__CreateSemaphoreA@16' /mingw/lib/libstdc++.a(globals_io.o)(.text+0x71): undefined reference to `_imp__CreateSemaphoreA@16' /mingw/lib/libstdc++.a(ios_init.o)(.text+0x34): undefined reference to `_Unwind_SjLj_Register' /mingw/lib/libstdc++.a(ios_init.o)(.text+0x60): undefined reference to `_Unwind_SjLj_Unregister'

, и этого - под несколько сотен строк :-(

anonymous
()
Ответ на: комментарий от anonymous

>, и этого - под несколько сотен строк :-(

Опять-таки не подключены какие-то MinGW'ные либы. А чем Вас не устраивает вариант с "g++ -shared <bla-bla-bla>"? g++ в этом случае вызывает тот-же ld, только сам передаёт ему необходимые параметры.

Sectoid ★★★★★
()
Ответ на: комментарий от Sectoid

Я линкеру хочу непосредственно передать нужные параметры, в частности, определить в дл-ке свои секции, ну и прочее. Может, есть смысл передать их g++ через -Wl?

anonymous
()
Ответ на: комментарий от anonymous

>Я линкеру хочу непосредственно передать нужные параметры, в частности, определить в дл-ке свои секции, ну и прочее. Может, есть смысл передать их g++ через -Wl?

Именно так и нужно поступать.

Sectoid ★★★★★
()
Ответ на: комментарий от Begemoth

Слишком на оффтопик смахивает :-) Кстати, никак не могу объяснить ни линкеру, ни компилятору, что мне нужно секцию создать в дл-ке. Как бы с ними общий язык найти (желательно C++)?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.