Я использую звездочку версии 13.5.0. В Utils каталоге, я создал новый модуль под названием curl_util с исходным кодом, как показано ниже:curl_easy_getinfo undefined ошибка символа
#include "asterisk/curl_utils.h"
HttpResponse * httpResponseNew()
{
HttpResponse * response = calloc(1, sizeof(HttpResponse));
return response;
error:
return NULL;
}
HttpResponse * httpRequestPost(char *url, char *post_body, size_t size)
{
struct MemoryStruct chunk;
CURL *curl = curl_easy_init();
chunk.memory = malloc(1);
chunk.size = 0;
HttpResponse *response = httpResponseNew();
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 0);
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post_body);
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, size);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HttpResponseMemoryWriter);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
response->res = curl_easy_perform(curl);
if (response->res != CURLE_OK)
{
response->OK = 0;
}
else
{
response->OK = 1;
response->size = chunk.size;
response->body = chunk.memory;
}
curl_easy_cleanup(curl);
return response;
error:
free(chunk.memory);
if (curl) curl_easy_cleanup(curl);
return response;
}
В chan_sip.c, я называю выше упомянутой httpRequestPost функции. Выполнение make и make install в порядке. Но при запуске DAHDI и звездочку, я получил следующее сообщение об ошибке:
Ошибка загрузки модуля chan_sip.so: не определен символ: httpRequestPost
loader.c: модуль chan_sip.so не может быть загружен.
Не могли бы вы дать подсказки или советы, чтобы исправить эту ошибку? Спасибо заранее.
Возможно, это связано с порядком загрузки модуля? см. [книгу] (http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/additional_configuration_tasks-modules-conf-file.html) для информации по заказу на загрузку – QuickDanger
Спасибо. Для моего случая я предположил, что curl_util не связан для make-файла, чтобы его построить, хотя в Makefile путь к curl_util уже включен. Итак, я попытался переместить вышеуказанный исходный код на chan_sip.c, после чего ошибка исчезла. Однако, я получаю еще одну ошибку: Ошибка загрузки модуля chan_sip.so: undefined symbol: curl_easy_getinfo. loader.c: модуль chan_sip.so не может быть загружен. – Aloha
Интересно, есть ли у звездочки функция, которая анализирует содержимое xml с URL-адреса, аналогичного функции httpRequestPost(), указанной выше. Кто-нибудь знает? – Aloha