unresolved external symbol __except_list ??
От: Alex Levdan  
Дата: 16.08.04 10:34
Оценка:
Добрый День
Собираю проект, отключил стандартные run-time библиотеки, все было нормально, но при линковщик не может разрешить указанные функции

error LNK2001: unresolved external symbol __except_handler3
error LNK2001: unresolved external symbol __except_list

Все началось с того, что стал использовать SEH (__try, __except)
почему тянутся CRT библиотеки, может в настройках проекта надо что-то включить ?

Может их перегрузить чем можно или откуда взять ?
Re: unresolved external symbol __except_list ??
От: Pavel Dvorkin Россия  
Дата: 16.08.04 10:40
Оценка:
Привет!

Alex Levdan wrote:
>
> Добрый День
> Собираю проект, отключил стандартные run-time библиотеки, все было нормально, но при линковщик не может разрешить указанные функции
>
> error LNK2001: unresolved external symbol __except_handler3
> error LNK2001: unresolved external symbol __except_list
>
> Все началось с того, что стал использовать SEH (__try, __except)
> почему тянутся CRT библиотеки, может в настройках проекта надо что-то включить ?
>
> Может их перегрузить чем можно или откуда взять ?

Чего не знаю, того не знаю, но вот среди файлов каталога

"D:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\Intel\Dll_lib\"

есть SEHSUPP.OBJ

То, что DLL тебе не нужна — понимаю. Но судя по всему, с DLL или без,
CRT содержит что-то по поддержке SEH.

--
With best regards,
Pavel Dvorkin
Posted via RSDN NNTP Server 1.7 "Bedlam"
With best regards
Pavel Dvorkin
Re[2]: unresolved external symbol __except_list ??
От: Pavel Dvorkin Россия  
Дата: 16.08.04 10:42
Оценка:
Забыл добавить. Если это файл посмотреть, то в нем эти имеются эти самые

except_handler3
except_list

--
With best regards,
Pavel Dvorkin
Posted via RSDN NNTP Server 1.7 "Bedlam"
With best regards
Pavel Dvorkin
Re[2]: unresolved external symbol __except_list ??
От: Alex Levdan  
Дата: 16.08.04 10:46
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Привет!


PD>Alex Levdan wrote:

>>
>> Добрый День
>> Собираю проект, отключил стандартные run-time библиотеки, все было нормально, но при линковщик не может разрешить указанные функции
>>
>> error LNK2001: unresolved external symbol __except_handler3
>> error LNK2001: unresolved external symbol __except_list
>>
>> Все началось с того, что стал использовать SEH (__try, __except)
>> почему тянутся CRT библиотеки, может в настройках проекта надо что-то включить ?
>>
>> Может их перегрузить чем можно или откуда взять ?

PD>Чего не знаю, того не знаю, но вот среди файлов каталога


PD>"D:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\Intel\Dll_lib\"


PD>есть SEHSUPP.OBJ


PD>То, что DLL тебе не нужна — понимаю. Но судя по всему, с DLL или без,

PD>CRT содержит что-то по поддержке SEH.

PD>--

PD>With best regards,
PD> Pavel Dvorkin



Супер, я вообще то считал, что SEH в нативном виде не требует поддержки CRT (и как следствие стартового кода), выходит, что нет.
Re[3]: unresolved external symbol __except_list ??
От: Pavel Dvorkin Россия  
Дата: 16.08.04 10:53
Оценка:
Привет!

Alex Levdan wrote:

> Супер, я вообще то считал, что SEH в нативном виде не требует поддержки CRT (и как следствие стартового кода), выходит, что нет.


Решил я это вопрос исследовать. Написал вот такую программу (сорри

#include "stdafx.h"
#include <excpt.h>


int main(int argc, char* argv[])
{
__try
{
printf("Hello World!\n");
return 0;
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
int t=0;
}
}

и посмотрел ее ассемблерный листинг

8: int main(int argc, char* argv[])
9: {
00401010 push ebp
00401011 mov ebp,esp
00401013 push 0FFh
00401015 push offset string "Hello World!\n"+14h (00422030)
0040101A push offset __except_handler3 (00401280)
0040101F mov eax,fs:[00000000]
00401025 push eax


Вот такие дела...

--
With best regards,
Pavel Dvorkin
Posted via RSDN NNTP Server 1.7 "Bedlam"
With best regards
Pavel Dvorkin
Re[4]: unresolved external symbol __except_list ??
От: Alex Levdan  
Дата: 16.08.04 11:13
Оценка:
Однако все равно престранно
накопал статью

"Анатомия C Run-Time, или Как сделать программу немного меньшего размера" (http://www.rsdn.ru/article/cpp/crt.xml
Автор(ы): Виталий Брусенцев
Дата: 19.01.02
Статья посвящена вопросам оптимизации размера выполняемых модулей, генерируемых различными
компиляторами C++ (основное внимание уделено MS Visual С++). С этой целью рассматриваются особенности Библиотеки исполнения C/C++ и ее реализаций, а также процессы компиляции и компоновки приложений. Приведены практические приемы, позволяющие в ряде случаев уменьшить размер приложения до величины 3-4 килобайта.
)

там в главе "Используйте SEH вместо C++ Exceptions" написано, что SEH не требует CRT инициализации ...
Re[5]: unresolved external symbol __except_list ??
От: Sergey Россия  
Дата: 16.08.04 11:18
Оценка:
Hello, Alex!
You wrote on Mon, 16 Aug 2004 11:13:42 GMT:

AL> "Анатомия C Run-Time, или Как сделать программу немного меньшего

AL> размера" (http://www.rsdn.ru/article/cpp/crt.xml
Автор(ы): Виталий Брусенцев
Дата: 19.01.02
Статья посвящена вопросам оптимизации размера выполняемых модулей, генерируемых различными
компиляторами C++ (основное внимание уделено MS Visual С++). С этой целью рассматриваются особенности Библиотеки исполнения C/C++ и ее реализаций, а также процессы компиляции и компоновки приложений. Приведены практические приемы, позволяющие в ряде случаев уменьшить размер приложения до величины 3-4 килобайта.
)


AL> там в главе "Используйте SEH вместо C++ Exceptions" написано, что SEH

AL> не требует CRT инициализации ...

А использование __except_handler3 никакой инициализации и не требует. Линкуй
себе статически с CRT, будет нормально работать с "рукописной" точкой входа.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[5]: unresolved external symbol __except_list ??
От: Pavel Dvorkin Россия  
Дата: 16.08.04 11:22
Оценка:
Привет!

Alex Levdan wrote:
>
> Однако все равно престранно
> накопал статью
>
> "Анатомия C Run-Time, или Как сделать программу немного меньшего размера" (http://www.rsdn.ru/article/cpp/crt.xml
Автор(ы): Виталий Брусенцев
Дата: 19.01.02
Статья посвящена вопросам оптимизации размера выполняемых модулей, генерируемых различными
компиляторами C++ (основное внимание уделено MS Visual С++). С этой целью рассматриваются особенности Библиотеки исполнения C/C++ и ее реализаций, а также процессы компиляции и компоновки приложений. Приведены практические приемы, позволяющие в ряде случаев уменьшить размер приложения до величины 3-4 килобайта.
)

>
> там в главе "Используйте SEH вместо C++ Exceptions" написано, что SEH не требует CRT инициализации ...

Посмотрел. Вообще-то действительно странно, потому что SEH реализуется
Windows, а не CRT. А исходников этих except_handler3 и except_list увы,
нет. Может, стоит автора статьи спросить?

Я попробовал сейчас Release сделать. Один черт.

push ebp
mov ebp, esp
push -1
push OFFSET FLAT:$T614
push OFFSET FLAT:__except_handler3
mov eax, DWORD PTR fs:__except_list
push eax
mov DWORD PTR fs:__except_list, esp


--
With best regards,
Pavel Dvorkin
Posted via RSDN NNTP Server 1.7 "Bedlam"
With best regards
Pavel Dvorkin
Re: unresolved external symbol __except_list ??
От: adontz Грузия http://adontz.wordpress.com/
Дата: 16.08.04 11:29
Оценка:
Здравствуйте, Alex Levdan, Вы писали:

http://www.microsoft.com/msj/0197/exception/exception.aspx
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[6]: unresolved external symbol __except_list ??
От: SergH Россия  
Дата: 16.08.04 13:04
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Посмотрел. Вообще-то действительно странно, потому что SEH реализуется

PD>Windows, а не CRT. А исходников этих except_handler3 и except_list увы,
PD>нет.

Файл CRT\SRC\Intel\dllsupp.asm (почти полностью):

.xlist
include cruntime.inc
.list

; offset, with respect to FS, of pointer to currently active exception handler.
; referenced by compiler generated code for SEH and by _setjmp().

        public  _except_list
_except_list    equ     0

        public  _fltused
_fltused        equ     9876h

        public  _ldused
_ldused         equ     9876h

        end


А exept_handler3 и правда упоминается только в obj- и def-файлах. Там же, кстати, есть какой-то exept_handler2.
Делай что должно, и будь что будет
Re[7]: unresolved external symbol __except_list ??
От: warhast Россия  
Дата: 16.08.04 15:16
Оценка:
Здравствуйте, SergH, Вы писали:

SH>А exept_handler3 и правда упоминается только в obj- и def-файлах. Там же, кстати, есть какой-то exept_handler2.


Этот except_handler3 переписывать самому — нудновато будет, хотя функция и небольшая. Можно ведь просто прилинковывать нужные obj-и и не мучиться, это от силы полкило прибавит к программе.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.