gpt4 book ai didi

运行时的 C++ 编译

转载 作者:太空狗 更新时间:2023-10-29 23:06:26 24 4
gpt4 key购买 nike

因此,我在几个月前观看了这段视频,其中 Epic 展示了他们新的虚幻引擎 4 开发人员功能。抱歉,我找不到视频,但我会尽力解释。

引起我注意的一个特性是 C++“即时”修改和编译。这家伙展示了他是如何在编辑器中玩游戏的,并修改了代码中的一些变量,保存它,所做的更改立即反射(reflect)在游戏中。

所以我一直在想...如何实现这一目标?目前我可以想到两种可能的方法:要么是骗局,要么是“c 风格”——脚本语言而不是 C++ 本身,要么是共享库(读取:DLL)魔术。

这是我自己尝试的东西(简化):

for(;;)
{
Move DLL from build directory to execution directory
Link to DLL using LoadLibrary() / dlopen() and fetch a pointer to function "foo()" from it
for(;;)
{
Call the function "foo()" found in the dll
Check the source of the dll for changes
If it has changed, attempt to compile
On succesfull compile, break
}
Unload DLL with FreeLibrary() / dlclose()
}

现在这似乎行得通,但我不禁想知道还有哪些其他方法?这种方法与使用脚本语言相比如何?

编辑: https://www.youtube.com/watch?v=MOvfn1p92_8&t=10m0s

最佳答案

是的,“热代码修改”绝对是许多 IDE/调试器在某种程度上可以拥有的一种能力。这是一篇好文章:

这是 MSVS“编辑并继续”的手册页:

关于运行时的 C++ 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15751377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com