gsoap - скомпилировать используя -lcrypt - PullRequest
0 голосов
/ 07 сентября 2011

Я работаю в Ubuntu под кодом C ++. Я использую gsoap для подключения к серверу. Я получил все необходимые данные. Мне также удалось подключиться к серверу. Тем не менее у меня есть вопрос. Зачем мне писать в командной строке: g ++ test_server.cpp -o testServ libgsoap ++. A. Зачем мне включать libgsoap ++. A в мою командную строку, если я включил все зависимости в мою папку? EDIT:

Если я не включу libgsoap ++. A в командную строку, у меня будет:

undefined reference to `soap_embed'
/tmp/ccyeN0df.o: In function `soap_serialize_string(soap*, char* const*)':
TEST.cpp:(.text+0xb9de): undefined reference to `soap_reference'
/tmp/ccyeN0df.o: In function `soap_out_string(soap*, char const*, int, char* const*, char const*)':
TEST.cpp:(.text+0xba15): undefined reference to `soap_outstring'
/tmp/ccyeN0df.o: In function `soap_in_string(soap*, char const*, char**, char const*)':

1 Ответ

1 голос
/ 07 сентября 2011

Вы должны указать g ++, что хотите связать с libgsoap ++ с помощью -lgsoap ++.

Если вы хотите связать с несистемной версией libgsopa ++, вам нужно указать путь к библиотеке g ++ через -L flag.

Краткое объяснение:

Произошла ошибка во время соединения.Компиляция прошла успешно, и были получены объектные файлы.Во время компиляции вы «пообещали» (включая включаемые файлы gsoap), что soap_serialize_string и другие существуют где-то, а объектный код доступен.

Теперь компоновщик пытается создать исполняемый файл из этих объектных файлов.Он проверяет все эти «обещания» в объектных файлах и пытается их разрешить: заменить его вызовом реальных функций.Где существуют эти «актуальные функции»?В вашем случае это libgsoap ++. A.

Так что, если вы не скажете компоновщику ссылаться на libgsoap ++. A, обещания просто останутся обещаниями, и у вас будут неопределенные ссылки.

...