Форум: "Потрепаться";
Текущий архив: 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.038 c