Там что-нибудь должно изменить схему искажения имени экспорта в GCC?

Я думаю, что исходную игру назвали Базовые войны (эта статья Wikipedia содержит много интересных ссылок); все еще, кажется, существуют программы и соревнования вокруг, например, в corewars.org . У меня никогда не было времени для изучения этих игр, но они походят на отличное развлечение.

7
задан JP. 9 November 2009 в 20:44
поделиться

3 ответа

См. этот ответ .

int Func() __asm__("_Func@X");

Это заставит GCC назвать символ _Func @ X независимо от того, что он сделал бы обычно.


Да ладно, @ это special: используется для управления версиями символов. Я думал, что __ asm __ (" ... @ ... ") раньше работало, но, думаю, больше не работает.

int Func() __asm__("_Func");
__asm__(".symver _Func, _Func@X");

Это должно сопровождаться скриптом версии ], например:

1 {
  global:
    _Func;
};

передается в gcc -Wl, - version-script = foo.version при компоновке.

4
ответ дан 7 December 2019 в 14:34
поделиться

См. Руководство GCC относительно -fleading- подчеркивание . Тем не менее, прочтите предупреждения о последствиях этого действия; возможно, это не то решение, которое вы думаете.

0
ответ дан 7 December 2019 в 14:34
поделиться

При работе с изменением имени функции в Windows лучше всего всегда использовать файл .def . Это будет работать одинаково независимо от компилятора. Обычно вам нужен только раздел EXPORTS :

EXPORTS
  Func1
  Func2
  ...
0
ответ дан 7 December 2019 в 14:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: