Leency, добавить пример можно.
Насчёт описания к нему — не знаю, может нужно что-то уточнить.
Хорошо бы кто-то ещё попробовал. (Например, ты пробовал
BigSample viewtopic.php?f=2&t=3587 , и у тебя он собрался и работал.)
Другие компиляторы декорируют
stdcall функции.
Например,
Open Watcom по умолчанию декорирует
stdcall функции, добавляя перед
именем функции знак подчёркивания и суффикс "
@size" после имени
_FunctionName@size.
Существует флаг компилятора
Code:
zz remove "@size" from __stdcall function names
но вот флага, убирающего подчёркивание я не нашёл.
Можно решить вопрос добавлением такой прагмы в исходный код
Code:
#pragma aux __stdcall "*"
В
GCC наоборот, есть
-fno-leading-underscore(убирает подчёркивание),
но флаг убирающий "
@size"
-kill-at работают только для
dll. C
dlltool аналогично.
С
MSVC похоже тоже есть такая проблема.
Не хотелось бы изобретать велосипед, нужно всего лишь
-kill-at и
-fno-leading-underscore но чтобы работало для объектных файлов
MSCOFF, а не только для
dll.
Я, конечно, поискал немного в сети. Некоторые советуют сделать
dll и вызывать функции оттуда, некоторые советуют сделать
def-файл(это дополнительная работа, функций может быть 100500).
Но немало тех, кому нужно было прилинковать именно объектник, а
dll и
def-файл по каким-то причинам не подходят.
Ну в общем, я ещё немного поищу, если не найду, то придётся сделать для этого мини тулзу.
В принципе прогуляться по таблице символов — это не проблема, именно это и происходит в утилите
CoffDump viewtopic.php?f=9&t=3577Думаю, что это могло бы пригодиться даже не только здесь для
KolibriOS.
Вот так я собирал с помощью
Open Watcom
Code:
Set NAME=test
WCC386 -s %NAME%.c
LINK -edit %NAME%.obj
LD -T LScript.x %NAME%.obj -o %NAME%.kex -L %KolibriOS% -l KolibriOS
OBJCOPY -O binary -j .all %NAME%.kex
ключ
-s для компилятора
WCC386 означает "
remove stack overflow checks".
LScript в данном случае немного другой, так как компилятор
WCC386 создаёт секции с другими названиями(
CONST,
CONST2) и
функция
Main имеет в конце знак подчёркивания
Main_Attachment:
WCC+KolibriOS.lib.7z [1.43 KiB]
Downloaded 105 times