Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在LLVM JIT ed代码中启用RTTI时出现问题 我是Windows应用程序中的JIT ting C++代码。我使用的是LLVM/CLang 5.0,应用程序是使用MsVc 2015编译的_C++_Llvm_Jit_Rtti - Fatal编程技术网

在LLVM JIT ed代码中启用RTTI时出现问题 我是Windows应用程序中的JIT ting C++代码。我使用的是LLVM/CLang 5.0,应用程序是使用MsVc 2015编译的

在LLVM JIT ed代码中启用RTTI时出现问题 我是Windows应用程序中的JIT ting C++代码。我使用的是LLVM/CLang 5.0,应用程序是使用MsVc 2015编译的,c++,llvm,jit,rtti,C++,Llvm,Jit,Rtti,虽然DLL和使用这两个工具链创建的可执行代码可以很好地混合和匹配,但我面临的问题是JIT ted代码不包括LLVM应该自动生成的变量,如?\u 7type\u info@@6B@和相关的东西,如\01_R0H@8。它们只注册为外部的,任何使用它们都会导致应用程序崩溃 LLVM ERROR: Program used external function '??_7type_info@@6B@' which could not be resolved! 虽然我已经找到了向JIT ted代码中添加用

虽然DLL和使用这两个工具链创建的可执行代码可以很好地混合和匹配,但我面临的问题是JIT ted代码不包括LLVM应该自动生成的变量,如
?\u 7type\u info@@6B@
和相关的东西,如
\01_R0H@8
。它们只注册为外部的,任何使用它们都会导致应用程序崩溃

LLVM ERROR: Program used external function '??_7type_info@@6B@' which could not be resolved!
虽然我已经找到了向JIT ted代码中添加用户定义变量的例子,但对于让JIT代码引用这些在幕后生成的内部变量的问题,我找不到有效的解决方案

我相信我可以通过一个用CLang编译的DLL,通过调整
.ll
来提供缺少的变量,但我更喜欢一个更干净的解决方案,只需配置JIT引擎


有人能帮我吗?

?\u 7type\u info@@6B@是std::type\u info类的vtable的损坏名称,该类由一个或另一个隐式链接的MSVC静态库提供,例如:

c:/ProgramFiles(x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.15.26726/lib/x64/msvcrt.lib

< >修复LLVM查找错误,可以从自己的DLL或EXE导出这个符号,并且您可以从C++代码中这样做:

#pragma comment(linker, "/export:??_7type_info@@6B@")
另见

您可能还必须调用下面的实用程序函数,以确保所有符号对LLVM可见

llvm::sys::DynamicLibrary::loadlibrary永久(nullptr)


不确定这在这种情况下是否是绝对必要的,但LLVM JIT编译器教程推荐使用它。

非常感谢您提供了一个很好的答案。我会马上实施你的建议。@HiltonFernandes:如果这个答案让你找到了解决方案,那么你会想“接受”它。有关此方面的详细信息,请阅读帮助网站的本节:。