Связывание Windows - PullRequest
       33

Связывание Windows

2 голосов
/ 29 августа 2011

Я пытаюсь использовать SCons для компиляции и компоновки простой программы для Windows.У меня есть два файла, которые нуждаются в компиляции, httprequest.cpp и curltest.cpp.Во-первых, я хотел бы сделать библиотеку из файлов httprequest. * Pp.Эти файлы основаны на библиотеке libcurl.lib, которая также находится в моем исходном коде.

После компиляции я пытаюсь скомпилировать curltest.cpp в .exe (также полагаясь на библиотеку libcurl.lib),Тем не менее, я продолжаю получать ошибки, такие как:

httpreq.lib(httprequest.obj) : error LNK2019: unresolved external symbol __imp__curl_easy_setopt referenced in function "public: __thiscall HTTPRequest::HTTPRequest(void)" (??0HTTPRequest@@QAE@XZ)

Несмотря на явную ссылку на libcurl.lib (который я подтвердил - используя nm - есть доступные методы __curl_easy_setopt и тому подобное), с которыми я сталкиваюсьпроблемы, когда httpreq.lib пытается найти методы libcurl.

Как я могу связать в libcurl.lib библиотеку httpreq и исполняемый файл curltest без проблем?

РЕДАКТИРОВАТЬ: Этомой файл SConstruct, который прекрасно собирается и связывается под Ubuntu 11.04.

httpreq = 'src//httprequest.cpp'
StaticLibrary('httpreq', httpreq)
env = Environment(
                    CPPPATH = ['#//include//curl',
                                '#//src'
                                ],

                    LIBPATH = ['#//bin',
                                '#//'
                                ],

                    LIBS = ['libcurl',
                            'httpreq'
                            ]
                )
curltest = ['src//curltest.cpp']
env.Program('test', curltest)

1 Ответ

1 голос
/ 30 августа 2011

На этот вопрос, похоже, уже есть ответы в libcurl FAQ .

Ключ в том, что для использования статической libcurl lib в windows вы должны определить CURL_STATICLIB во время компиляции.1005 *

...