|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 10, 2003 17:42:51 Привет. В MS VC++ 7.0 написал прогу, ну и не линкуется она с одной либой: Miracl. Вот что линкер выдаёт: LIBC.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function _mainCRTStartup Release/snatch.exe : fatal error LNK1120: 1 unresolved externals Runtime library не использую: своя точка входа. Поэтому наверно и ошибка лезет. Хмм.. но ведь main() - для консольных приложений. Что делать? Это ведь можно как-то обойти? P.S. Ногами сильно не бейте - новичёк ведь ещё. d:) Заранее благодарен. |
|
|
Дата: Ноя 10, 2003 18:09:55 Ногами сильно не бейте Честно? А надо бы. main - для любых приложений. И пора бы уже посмотреть код crt0.c - там и увидишь - что мэинов - 4 штуки. |
|
|
Дата: Ноя 10, 2003 22:59:47 Посмотрел.. ясно... Но как воспользоваться либой?.. Без runtime кода никак? |
|
|
Дата: Ноя 11, 2003 00:04:56 С-приложений без main не бывает. |
|
|
Дата: Ноя 11, 2003 00:46:03 Поиграйся с настройками линкера. Там можно задать свою точку входа в программу, да и игнорировать одну или все default библиотеки. |
|
|
Дата: Ноя 11, 2003 02:43:29 snatch Ты не читал _http://www.uinc.ru/articles/28/index.shtml |
|
|
Дата: Ноя 11, 2003 16:04:14 Эту статью я читал. Спасибо, Asterix. С опциями линкера играл: установил свою собственную entry point, там GetModuleHandle ну и поехали, но тогда линкер тщательно ищет symbol _main referenced in function _mainCRTStartup и всё... Если дефаултовые либы отключить, то тогда все функции, которые я из Miracl.lib вызываю, становятся unresolved externals.. Ага.. В IDA'е поглядел, что вот функции либы выделяют себе в Heap'е память для работы, но сам указатель на кучу получен в рантайм коде, его то они и используют. Тут получается, что по любач нужен рантайм код. Ну а если его самому модифицировать: сделать маленьким - интересно будет работать?.. А то там аж 30 кб почти получается. Гы: интересный там рантайм код, в MS VC++ 7.0 (или и в других версиях такой же): вообщем получает imagebase и затем идут проверки на валидность самого pe-файла уже загруженного. хмм.. зачем это? Типа что ли загрузчик плюнул да и загрузил чёрт ти что в память, ну а мы сами там ещё раз проверимся: мало ли чего там записалось пока "я" - рантайм код упрвление получил... :p Да и ещё и FileAligment задать линкеру не удаётся: говорит не знает он такой опции. 0x1000 аж делает. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.222 |