gpt4 book ai didi

c++ - 在 Windows 上构建 LLVM 示例时缺少 CoTaskMemFree

转载 作者:搜寻专家 更新时间:2023-10-31 02:19:15 27 4
gpt4 key购买 nike

我试图基本上遵循 llvm Kaleidoscope example .

我在 Windows 上。我按照网站上的说明从源代码构建了 llvm。花了相当长的时间,但终于成功构建(至少没有错误)。

然后用我自己的代码运行这个命令:

$  clang-cl main.obj llvm/lib/LLVMCore.lib llvm/lib/LLVMSupport.lib /MDd -o build\test.exe

我的 main.cpp 代码中有这个:

#include "llvm/ADT/STLExtras.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Verifier.h"

std::unique_ptr<Module> module = llvm::make_unique<Module>("my cool jit", getGlobalContext());

我没有收到任何解析器错误,但我收到了链接器的错误,我这辈子都弄不明白:

LLVMSupport.lib(Path.obj) : error LNK2019: unresolved external symbol
__imp_CoTaskMemFree referenced in function "bool __cdecl
llvm::sys::path::getKnownFolderPath(struct _GUID,class
llvm::SmallVectorImpl<char> &)" (?
getKnownFolderPath@path@sys@llvm@@YA_NU_GUID@@AEAV?$SmallVectorImpl@D@3@@Z)

build\test.exe : fatal error LNK1120: 1 unresolved externals

要定义此函数,我必须链接到哪个库?我可以在我构建的代码中看到实现。我是否需要以特定方式构建 llvm 才能将其导出?

编辑:

事实证明我需要阅读 the clang-cl documentation它说的更好一点:

To enable clang-cl to find system headers, libraries, and the linker when run from the command-line, it should be executed inside a Visual Studio Native Tools Command Prompt or a regular Command Prompt where the environment has been set up using e.g. vcvars32.bat.

事实证明,这解决了我的问题。我有点困惑,因为 clang-cl 似乎自动解析 sdk 包含和工具路径,但不是 lib 路径。我也不想使用 CMD 来驱动 clang,所以我在无法轻松运行 vcvar32.bat 的地方使用 bash。我通过基本上复制 vcvar32.bat$PATH$INCLUDE$LIB 的操作解决了我的问题> 和 $LIBPATH 环境变量,并将 Ole32.Lib 作为参数添加到 clang-cl。然后它就像一个魅力。

最佳答案

您缺少 CoTaskMemFree 符号。快速浏览 Internet 表明您需要在链接行上使用 Ole32 系统库。

我无权访问 Windows 机器进行测试,但在我的计算机上,我可以运行 llvm-config --system-libs 并获取所有必要的东西。添加 using namespace llvm; 并添加 stub main 函数后,我可以使用(在 OSX 上)轻松构建此示例:

c++ `llvm-config --cxxflags` main.cpp `llvm-config --ldflags --system-libs --libs core support`

我经常建议只指定 --libs 而不是猜测你需要什么,而是你的选择。

关于c++ - 在 Windows 上构建 LLVM 示例时缺少 CoTaskMemFree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33685644/

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