Проблемы с блоками кода, MinGW, Boost и статическими ссылками - PullRequest
11 голосов
/ 14 сентября 2010

Я использую Code Blocks с MinGW и пытаюсь получить простую программу для компиляции со статическим связыванием. Я создал библиотеки Boost, используя в этих направлениях . Все работало нормально, и я смог успешно скомпилировать эту простую программу (она компилируется, я знаю, что она не работает, потому что она завершается до того, как сообщение отправлено на консоль, но я просто хочу, чтобы оно скомпилировалось).

Если у меня есть библиотека DLL в моих библиотеках компоновщика, она прекрасно компилируется, но когда я переключаю ее на статические библиотеки .a того же содержимого, я получаю неопределенные ссылки, такие как «неопределенная ссылка на` _imp ___ ZN5boost6threadD1Ev '| ».

Я понятия не имею, в чем проблема, и не могу найти решение. Я думаю, что это может быть связано с настройками компоновщика, но я не могу найти информацию о том, как их изменить. Буду очень признателен за любую помощь, которая может быть оказана.

#include <iostream>
#include <boost/thread.hpp>

void myfunction()
{
    std::cout << "this is a thread" << std::endl;
    return;
}

int main()
{
    boost::thread mythread(&myfunction);
    return 0;

}

1 Ответ

10 голосов
/ 17 сентября 2010

Это попытка статической ссылки, когда заголовки настроены для динамической связи. Я объясняю это для libssh в этот вопрос . Из-за использования boost/thread/detail/config.hpp я думаю, что вам следует #define BOOST_THREAD_USE_LIB или использовать флаг -D, чтобы сделать то же самое.

...