三国群英2吧 关注:45,918贴子:1,015,471
  • 1回复贴,共1

关于多个so文件的同名函数会引起冲突的问题

取消只看楼主收藏回复

反编译system脚本发现,system脚本里有一个EnterBattle函数会asynccall一个叫InitializeBattle的函数,查了半天查不到这个函数
结果一想不对,查magic脚本,果然,这个InitializeBattle函数在magic里
结论是,多个so文件同名函数会冲突原来不是个BUG,是个特性,设计上就可以跨so调用函数


IP属地:美国1楼2020-08-25 23:59回复
    原来计划v0.9.6解决这个跨so同名函数的问题,是给函数名加固定前缀,比如magic.cpp编译出来的MoveCamera就会自动更名为magic_MoveCamera
    现在发现如果要支持跨so去asynccall,就得增加相应的语法特性,同时Wait和IsRunning也得增加跨so的支持,后两者还是用字符串调用的……
    所以?
    asynccall magic::MoveCamera?
    Wait("magic::MoveCamera"),然后编译器自动把双冒号替换成下划线?
    再仔细一想,这样一搞,已有的内嵌汇编会全部失灵……


    IP属地:美国2楼2020-08-26 00:05
    回复