将lua嵌入到c ++中,但是外部问题无法解决:floor,freopen和strcoll

问题描述

我将lua嵌入到c ++ vs2019解决方案中,它导致将错误链接到基本c库 (__imp_freopen__imp_floor__imp_strcoll)。

lua在其自己的项目中作为静态c库进行编译并链接到主项目,但是使用luaL_newstate();时,我得到freopen(...)floor(...)和{{ 1}}。

我的最佳猜测是此错误来自我的构建系统(premake5),因为当我使用vs2019手动添加项目时,没有链接错误,但是由于我经常在整个操作系统上处理该项目,因此无法正常显示premake很多问题。 我希望对缩小问题范围有任何想法。

lua的预制:

strcmp(...)

解决方案的相关预制件:

project "lua"
    kind "StaticLib"
    language "C"

    targetdir ("bin/" .. outputdir .. "/%{prj.name}")
    objdir ("bin-int/" .. outputdir .. "/%{prj.name}")

    files
    {
        "src/**.c","src/**.h","src/lua.hpp"
    }

    excludes
    {
        "src/lua.c","src/luac.c"
    }

    filter "configurations:Debug"
        runtime "Debug"
        symbols "on"

    filter "configurations:Release"
        runtime "Release"
        optimize "on"

lua.hpp仅包含在workspace "solution" architecture "x86_64" startproject "test" configurations { "Debug","Release" } flags { "MultiProcessorCompile" } outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}" IncludeDir = {} IncludeDir["GLFW"] = "engine/vendor/GLFW/include" IncludeDir["Glad"] = "engine/vendor/Glad/include" IncludeDir["ImGui"] = "engine/vendor/imgui" IncludeDir["glm"] = "engine/vendor/glm" IncludeDir["stb_image"] = "engine/vendor/stb_image" IncludeDir["lua"] = "engine/vendor/lua" group "dependencies" include "engine/vendor/GLFW" include "engine/vendor/Glad" include "engine/vendor/imgui" include "engine/vendor/lua" group "" project "engine" location "engine" kind "StaticLib" language "C++" cppdialect "C++17" staticruntime "on" targetdir ("bin/" .. outputdir .. "/%{prj.name}") objdir ("bin-int/" .. outputdir .. "/%{prj.name}") pchheader "pch.h" pchsource "engine/src/pch.cpp" files { "%{prj.name}/src/**.h","%{prj.name}/src/**.cpp","%{prj.name}/vendor/stb_image/**.h","%{prj.name}/vendor/stb_image/**.cpp","%{prj.name}/vendor/glm/glm/**.hpp","%{prj.name}/vendor/glm/glm/**.inl" } defines { "_CRT_SECURE_NO_WARNINGS","GLFW_INCLUDE_NONE" } includedirs { "%{prj.name}/src","%{prj.name}/vendor/spdlog/include","%{IncludeDir.GLFW}","%{IncludeDir.Glad}","%{IncludeDir.ImGui}","%{IncludeDir.glm}","%{IncludeDir.stb_image}","%{IncludeDir.lua}" } links { "GLFW","Glad","ImGui","opengl32.lib","lua" } filter "configurations:Debug" runtime "Debug" optimize "off" symbols "on" filter "configurations:Release" runtime "Release" optimize "on" project "test" location "test" kind "ConsoleApp" language "C++" cppdialect "C++17" staticruntime "on" targetdir ("bin/" .. outputdir .. "/%{prj.name}") objdir ("bin-int/" .. outputdir .. "/%{prj.name}") files { "%{prj.name}/src/**.h","%{prj.name}/*.cpp" } includedirs { "engine/vendor/spdlog/include","engine/src","engine/vendor","%{IncludeDir.glm}" } links { "engine" } filter "configurations:Debug" runtime "Debug" symbols "on" filter "configurations:Release" runtime "Release" optimize "on" 的lua_script.cpp中。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)