Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Как 'прикрутить' CxImage к своей программе (http://forum.oszone.net/showthread.php?t=166908)

crashtuak 10-02-2010 08:51 1343650

Как 'прикрутить' CxImage к своей программе
 
Как 'прикрутить' CxImage к своей программе? Сделал всё вроде бы как надо, но при линковании куча ошибок. Вот ссылка www.codeproject.com/KB/graphics/cximage.aspx.

pva 10-02-2010 14:00 1343843

можно ошибки посмотреть?

crashtuak 10-02-2010 14:10 1343856

error LNK2005: _fclose already defined in libcmt.lib(fclose.obj) и куча подобных, + несколько error LNK2002: unresolved external symbol. Полностью привести ошибки могу гдето после 7 часов(час. пояс +2).

crashtuak 10-02-2010 20:27 1344144

Вот все ошибки:
Код:

MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _fclose already defined in LIBCD.lib(fclose.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _fflush already defined in LIBCD.lib(fflush.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _free already defined in LIBCD.lib(dbgheap.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _malloc already defined in LIBCD.lib(dbgheap.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _realloc already defined in LIBCD.lib(dbgheap.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _strncpy already defined in LIBCD.lib(strncpy.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _calloc already defined in LIBCD.lib(dbgheap.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _sprintf already defined in LIBCD.lib(sprintf.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _abort already defined in LIBCD.lib(abort.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: __snprintf already defined in LIBCD.lib(snprintf.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _memmove already defined in LIBCD.lib(memmove.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: __isctype already defined in LIBCD.lib(isctype.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _exit already defined in LIBCD.lib(crt0dat.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: __write already defined in LIBCD.lib(write.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: __lseek already defined in LIBCD.lib(lseek.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: __close already defined in LIBCD.lib(close.obj)
LINK : warning LNK4098: defaultlib "MSVCRTD" conflicts with use of other libs; use /NODEFAULTLIB:library
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_cleanup
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_setcb_getalphaline
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_setcb_settimer
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_setcb_gettickcount
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_setcb_refresh
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_setcb_getcanvasline
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_setcb_processheader
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_setcb_readdata
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_setcb_closestream
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_setcb_openstream
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_setcb_errorproc
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_get_userdata
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_set_canvasstyle
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_display_resume
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_store_error
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_readdisplay
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_set_suspensionmode
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_set_storechunks
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_set_usebkgd
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_set_bgcolor
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_set_srgb
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_initialize
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_write
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_create
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_setcb_writedata
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_putchunk_iend
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_putchunk_idat
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_putchunk_ihdr
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_putchunk_defi


pva 11-02-2010 08:00 1344485

Цитата:

Цитата crashtuak
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _fclose already defined in LIBCD.lib(fclose.obj) »

функция определена в двух библиотеках. Одну из них надо убрать из списка линкера
Цитата:

Цитата crashtuak
cximage.lib(ximamng.obj) : error LNK2001: unresolved external symbol _mng_cleanup »

библиотека ссылается на символ _mng_cleanup. Надо найти библиотеку, в которой он описан и подключить его к списку линкера. Поиск можно сделать по содержимому слова "_mng_cleanup" в файлах *.lib, а дальше методом тыка отсеять ненужное. Либо читать в документации, какой lib надо подключать
Все остальные ошибки однотипные
В борландовском компиляторе: Если функция на самом деле называется mng_cleanup (без подчёркивания) и в файле *.lib она тоже без подчёркивания, то скорее всего нужно найти объявление этой функции и поместить её в блок extern "C" {...}, тогда билдер не будет добавлять подчёркивания в начале названия в *.obj и всё прекрасно слинкуется. С bcb6 иногда такой фокус не прокатывал (глюк).

crashtuak 11-02-2010 09:31 1344520

pva, с error LNK2001:
unresolved external symbol'ами я разобрался в час ночи, точно либа отсуствувала. С error LNK2005 тоже успешно справился, вот только как, я не знаю:-). Я добавил VATI_EXTENSIONS в Preprocessor definitions. Потом я изменил какой то ключ в настройках компилятора, стало просто варнинг выдавать. Может знаете, что же я там намутил? Или правильное решение...

pva 11-02-2010 15:53 1344775

Цитата:

Цитата crashtuak
Может знаете, что же я там намутил? Или правильное решение... »

только догадки по сообщениям компилятора

crashtuak 11-02-2010 16:30 1344808

Для начала укажу, что работаю в Microsoft Visual C++ 6.0. В моем проекте я открываю Project Settings, в вкладке C/C++ в поле Project Options было /nologo /MLd /W3..., что я сменил на /nologo /MDd /W3..., ну и соответственно добавил VATI_EXTENSIONS в Preprocessor definitions. Теперь даже варнинга не выдало ни одного. Можно узнать, что дало использование VATI_EXTENSIONS и замена /MLd на /MDd?

pva 11-02-2010 17:50 1344848

ключи линкера /Mld /MDd
http://msdn.microsoft.com/en-us/libr...y3(VS.71).aspx

/MDd Defines _DEBUG, _MT, and _DLL so that debug multithread- and DLL-specific versions of the run-time routines are selected from the standard .h files. It also causes the compiler to place the library name MSVCRTD.lib into the .obj file

VATI_EXTENSIONS - судя по исходиникам, которые выдаёт гугл, этот дефайн добавляет дополнительные возможности в диалогах программы (шрифты какие-то, кисти и т.д.). Если Lib был собранс этими дефайнами, лучше их указывать перед соответсвующими инклюдами, чтобы заголовок соответсвовал коду библиотеки.


Время: 08:45.

Время: 08:45.
© OSzone.net 2001-