Я думаю, что исходную игру назвали Базовые войны (эта статья Wikipedia содержит много интересных ссылок); все еще, кажется, существуют программы и соревнования вокруг, например, в corewars.org . У меня никогда не было времени для изучения этих игр, но они походят на отличное развлечение.
См. этот ответ .
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
при компоновке.
См. Руководство GCC относительно -fleading- подчеркивание . Тем не менее, прочтите предупреждения о последствиях этого действия; возможно, это не то решение, которое вы думаете.
При работе с изменением имени функции в Windows лучше всего всегда использовать файл .def
. Это будет работать одинаково независимо от компилятора. Обычно вам нужен только раздел EXPORTS
:
EXPORTS
Func1
Func2
...