Итак, у меня есть следующий IR-файл LLVM:
@msg = global [24 x i8] c"Hello LLVM!"
declare i32 @puts(i8* %string)
define void @main() {
"entry block":
%0 = getelementptr [24 x i8], [24 x i8]* @msg, i32 0, i32 0
%1 = call i32 @puts(i8* %0)
ret void
}
Затем я превращаю его в файл .obj, используя llc.Если я пытаюсь связать стандартную библиотеку (для функции put), она работает нормально, используя библиотеку MinGW:
link /ENTRY:main /DEFAULTLIB:libmsvcrt.a /LIBPATH:"C:\Program Files\mingw-w64\mingw64\x86_64-w64-mingw32\lib" /SUBSYSTEM:CONSOLE /OUT:bin/program.exe bin/program.obj
Но с использованием библиотеки MSVC это не удается:
link /ENTRY:main /DEFAULTLIB:msvcrt.lib /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\amd64" /SUBSYSTEM:CONSOLE /OUT:bin/program.exe bin/program.obj
program.obj : error LNK2019: unresolved external symbol puts referenced in function main
bin/program.exe : fatal error LNK1120: 1 unresolved externals
Я могуне могу понять, что мне здесь не хватает, и надеюсь, что кто-то здесь может помочь.