Моя программа не может успешно компилироваться в режиме / MT (многопоточность). Он компилируется в / MD (многопоточная DLL). Я хочу иметь возможность использовать libcurl и boost в приложении, которое я буду распространять с помощью установщика.
Компиляция: MSVS2010
Это код для воспроизведения моей проблемы:
#include "stdafx.h"
#include "boost/regex.hpp"
#include "curl/curl.h"
int _tmain(int argc, _TCHAR* argv[])
{
CURL *curl;
curl = curl_easy_init();
return 0;
}
Это предупреждение, которое я получаю, если в / Режим MD:
LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs;
use /NODEFAULTLIB:library
Если я попытаюсь выполнить компиляцию в режиме / MT, я получу:
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _calloc already defined in
LIBCMT.lib(calloc.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _realloc already defined in LIBCMT.lib(realloc.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _free already defined in LIBCMT.lib(free.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _malloc already defined in LIBCMT.lib(malloc.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _strtoul already defined in LIBCMT.lib(strtol.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _memmove already defined in LIBCMT.lib(memmove.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _tolower already defined in LIBCMT.lib(tolower.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _strtol already defined in LIBCMT.lib(strtol.obj)
...
: fatal error LNK1169: one or more multiply defined symbols found
Я хочу компилировать в режиме / MT, чтобы другие могли запускать мою готовую программу без установки MSVS или необходимости загрузки чего-либо дополнительного. Я могу включить в программу установки файлы dll или lib, необходимые моему приложению.
Я мог бы отключить загрузку библиотеки по умолчанию 'MSVCRTD', но затем компиляция с помощью boost не удалась.
Это мои определения препроцессора:
WIN32
_DEBUG
_CONSOLE
BUILDING_LIBCURL
HTTP_ONLY
Это мои дополнительные зависимости:
libcurl.lib
ws2_32.lib
winmm.lib
wldap32.lib
Кто-нибудь знает, что я делаю не так?
Спасибо, Уильям