Предварительная ссылка на SharedLib не работает (GLFW) - PullRequest
0 голосов
/ 28 марта 2019

Я сейчас пытаюсь выучить C ++ и подумал, что заняться магией OpenGL было бы неплохо.Я видел учебник по Premake5 и следовал за ним, за исключением того, что сам пытался связать библиотеку (GLFW).При создании файлов проекта для Visual Studio 2017 указанная мной библиотека каким-то образом неправильно связывается с проектом.Я получаю множество ошибок LINK, таких как:

glfw3.lib (monitor.c.obj): ошибка LNK2019: Verweis auf nicht aufgelöstes externes Символ "__imp__strdup" в Функциях "_glfwAllocMonitor".

glfw3.lib (win32_window.c.obj): ошибка LNK2001: Nicht aufgelöstes externes Символ "__imp__strdup".

...

Вот какмой файл premake5.lua выглядит так:

workspace "MojoEngine"
architecture "x64"

configurations
{
    "Debug",
    "Release",
    "Dist"
}

outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}"

project "MojoEngine"
location "MojoEngine"
kind "SharedLib"
language "C++"

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

librarydir = "%{prj.name}/libraries/"

files
{
    "%{prj.name}/src/**.h",
    "%{prj.name}/src/**.cpp"
}

includedirs
{
    librarydir .. "GLFW/include",
    "%{prj.name}/vendor/spdlog/include"
}

libdirs
{
    librarydir .. "GLFW/lib"
}

links
{
    "glfw3",
    "glfw3dll"
}

filter "system:windows"
    cppdialect "C++17"
    staticruntime "On"
    systemversion "latest"

    defines
    {
        "ME_PLATFORM_WINDOWS",
        "ME_BUILD_DLL"
    }

    postbuildcommands
    {
        ("{COPY} %{cfg.buildtarget.relpath} ../bin/" .. outputdir .. 
    "/Sandbox"),
        ("{COPY} %{prj.name}/lib/GLFW/glfw3.dll ../bin/" .. outputdir .. 
    "/Sandbox")
    }

filter "configurations:Debug"
    defines "ME_DEBUG"
    symbols "On"

filter "configurations:Release"
    defines "ME_RELEASE"
    optimize "On"

filter "configurations:Dist"
    defines "ME_DIST"
    optimize "On"

project "Sandbox"
location "Sandbox"
kind "ConsoleApp"
language "C++"

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

files
{
    "%{prj.name}/src/**.h",
    "%{prj.name}/src/**.cpp"
}

includedirs
{
    "MojoEngine/vendor/spdlog/include",
    "MojoEngine/src"
}

links
{
    "MojoEngine"
}

filter "system:windows"
    cppdialect "C++17"
    staticruntime "On"
    systemversion "latest"

    defines
    {
        "ME_PLATFORM_WINDOWS",
    }

filter "configurations:Debug"
    defines "ME_DEBUG"
    symbols "On"

filter "configurations:Release"
    defines "ME_RELEASE"
    optimize "On"

filter "configurations:Dist"
    defines "ME_DIST"
    optimize "On"
...