Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Вниз

Unresolved symbol...   Найти похожие ветки 

 
марсианин ©   (2004-09-11 00:36) [0]

заранее извиняюсь, что здесь прозвучит вопрос по Си.. сайт-то делфи..
но просто уже не знаю у кого спрашивать...

при компиляции выскакивают 2 ошибки линкера..

HelloWorld error LNK2019: unresolved external symbol __imp__CreateToolbarEx@52 referenced in function "public: void __thiscall KToolbar::Create(struct HWND__ *,struct HINSTANCE__ *,unsigned int,struct _TBBUTTON const *,int)" (?Create@KToolbar@@QAEXPAUHWND__@@PAUHINSTANCE__@@IPBU_TBBUTTON@@H@Z)

HelloWorld error LNK2019: unresolved external symbol __imp__CreateStatusWindowA@16 referenced in function "public: void __thiscall KStatusWindow::Create(struct HWND__ *,unsigned int)" (?Create@KStatusWindow@@QAEXPAUHWND__@@I@Z)

как с ними бороться?.. я и перестраивал проект.. и так и сяк.. раньше их было намного больше - почти на каждый символ поднималась тревога..

значит так...
это фрагмент кода библиотеки из книги Фень Юань "программирование графики в среде M$ Windows"..

фрагмент кода самый безобидный.. из книжки же.. прям с компакта изходники. т.е. какая-либо синтаксическая ошибка исключена.. - кроме того оригинальные примеры Феня с KToolBar и KStatusBar собираются без проблем..

фень составлял свои примеры в VC 6
а у меня же VC 7  .NET 2002 года.. но VC 7 предложил все сконвертировать.. и сконвертировал

проект вроде как использует юникод.. точка входа - _tWinMain

интересное замечание: если взять любой пример феня из того места, куда я их поместил еще 2 года назад (и где все прекрасно линкится) и скопировать в другое место (с инклюдами, относительные пути не нарушаются) - то как раз такое и полезет на каждую вторую АПИ-функцию..

но я просто хочу использовать библиотеки феня в своем проекте, скопировав их в другое место...

есть к-н. идеи?


 
wicked ©   (2004-09-11 00:57) [1]

вообще то это ошибки не компилятора, а линкера... то есть где то не подключены к проекту какие то библиотеки, где лежат эти функции (или линки на дллку с этими функциями)....
короче - искать в исходниках директивы #pragma link <obj файл> или #pragma comment(lib, <библиотека>) и глядеть, чего они хотят....
если таковых нету - найти оригинальные проекты и смотреть, какие библиотеки они линкуют....


 
марсианин ©   (2004-09-11 01:22) [2]

ясно, что линкера..

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

да и все его библиотеки аккуратно сложены в 1 папку инклюд... и я ее целиком перетаскиваю..
а не разрешаются как раз ВинАпи функции, хотя windows.h подключен.. windows.h вообще 1 большой наворот из инклюдов и максросов..
мне еще кажется странным, что линкер ищет __imp__CreateStatusWindowA хотя проект явно юникод..


 
wicked ©   (2004-09-11 02:54) [3]

попрошу не путать инклуды и либы - это разные вещи....
инклуды могут и быть все в одном месте, а вот к либам путь не находит... а именно к comctl32.lib.... кстати, на это указывает и префикс __imp__....


 
Suntechnic ©   (2004-09-11 03:35) [4]

>марсианин ©
нету таких прагм нигде..

Это совсем необязательно должны быть прагмы... В старой студии идёшь в Project->Settings вкладка Link поле Object/Library modules и вписываешь туда либы которых не хватает. Чтобы определить каких не хватает открываешь MSDN и читаешь описание. Например для CreateStatusWindow

Function Information

Header commctrl.h
Import library comctl32.lib
Minimum operating systems Windows NT 3.51, Windows 95


В VC .NET делаешь тоже самое только в другом месте Project->Properties->Linker->Input->Additional Dependensies

Или можно поробовать поиграться с настройками директорий в
Project->Properties->Linker->General->Additional Library directories

Правда это для 2003 студии, но в 2002 должно быть нечто подобное.


 
Григорьев Антон ©   (2004-09-11 08:18) [5]

Вообще, странно, что для функций API линкер пытается использовать декорированные имена: в системных библиотеках они все недекорированные. Видимо, где-то включается декорация, и это влияет на commctrl.h (чтоб тем придуркам, которые не предусмотрели в C++ модульности, пусть было!). Попробуйте включить commctrl.h следующим образом:

extern "C"
{
   #include <commctrl.h>
}


 
марсианин ©   (2004-09-11 11:28) [6]

спасибо всем за советы!

проблему удалось решить так.. скорее даже не решить, а отодвинуть..

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

и все-таки я ничего не понимаю... как он ищет?..

проект пустой, я туда скопировал только феневские классы..

везде стоит
#include <commctrl.h>

значит ли это, что он должен подключать comctl32.lib?
не может найти? дык она в каталоге Lib Platform SDK, куда путь в переменных окружения прописан, где все ищется.. вроде как.. да и в самой VC есть ее версия..

вот командная строка линкера при удачной сборке (я так понимаю, что там как раз список прилинкованных либов):
/OUT:".\Debug/FrameWindow.exe" /INCREMENTAL /NOLOGO /DEBUG /PDB:".\Debug/FrameWindow.pdb" /SUBSYSTEM:WINDOWS odbc32.lib odbccp32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib "\Program Files\Microsoft SDK\Lib\Kernel32.Lib" "\Program Files\Microsoft SDK\Lib\User32.Lib" "\Program Files\Microsoft SDK\Lib\Gdi32.Lib" "\Program Files\Microsoft SDK\Lib\WinSpool.Lib" "\Program Files\Microsoft SDK\Lib\ComDlg32.Lib" "\Program Files\Microsoft SDK\Lib\AdvAPI32.Lib" "\Program Files\Microsoft SDK\Lib\Shell32.Lib" "\Program Files\Microsoft SDK\Lib\Ole32.Lib" "\Program Files\Microsoft SDK\Lib\OleAut32.Lib" "\Program Files\Microsoft SDK\Lib\Uuid.Lib"
здесь

и когда вылазиеют те 2 ошибки линкера:
/OUT:"Debug/HelloWorld.exe" /INCREMENTAL /NOLOGO /DEBUG /PDB:"Debug/HelloWorld.pdb" /SUBSYSTEM:WINDOWS /MACHINE:IX86 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib "\Program Files\Microsoft SDK\Lib\Kernel32.Lib" "\Program Files\Microsoft SDK\Lib\User32.Lib" "\Program Files\Microsoft SDK\Lib\Gdi32.Lib" "\Program Files\Microsoft SDK\Lib\WinSpool.Lib" "\Program Files\Microsoft SDK\Lib\ComDlg32.Lib" "\Program Files\Microsoft SDK\Lib\AdvAPI32.Lib" "\Program Files\Microsoft SDK\Lib\Shell32.Lib" "\Program Files\Microsoft SDK\Lib\Ole32.Lib" "\Program Files\Microsoft SDK\Lib\OleAut32.Lib" "\Program Files\Microsoft SDK\Lib\Uuid.Lib"

есть ли разница?

ИМХО VC -сплошной наворот..
надо будет поизучать  документацию, почитать книжки.. но потом..
я уже начал писать код.  пока проблем нет.. правда, пишу сначала на паскале в делфи, а потом транслирую это в студио.. черт, привычка, наверное..  но проект должен быть в VC.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.029 c
1-1095327352
~Shaman~
2004-09-16 13:35
2004.10.03
вопрос по работе с TStringList


11-1081172074
nester
2004-04-05 17:34
2004.10.03
Что ето????? Unable to build ....


14-1095234195
NickBat
2004-09-15 11:43
2004.10.03
Вопрос по JavaScript меню.


14-1095069018
Scalder
2004-09-13 13:50
2004.10.03
Общие вопросы по Delphi


3-1094566704
Виталий Панасенко
2004-09-07 18:18
2004.10.03
Обновление VIEW





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский