我目前正在尝试学习C ++,并且认为做一些OpenGL魔术将是一个不错的主意。 除了我自己尝试链接库(GLFW)之外,我看了Premake5教程并遵循了它。 在为Visual Studio 2017生成项目文件时,我以某种方式指定的库无法正确链接到项目中。 我收到很多类似这样的LINK错误:
glfw3.lib(monitor.c.obj):错误LNK2019:在功能“ _glfwAllocMonitor”中显示符号“ __imp__strdup”。
glfw3.lib(win32_window.c.obj):错误LNK2001:Nichtaufgelöstesexternes符号“ __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"
答案 0 :(得分:1)
查看glfw文档。在那里,您必须链接一些针对Windows的库,以用于不同的编译器版本。
在Windows下链接使用静态版本的程序时 GLFW,您必须与opengl32链接。在某些版本的MinGW上,您必须 还明确链接到gdi32,而其他版本的MinGW包括 它在默认库集中以及其他依赖项(如 user32和kernel32。如果您使用的是GLU,则还必须链接 glu32。
如果使用MinGW,则可能需要将gdi32链接到“ MojoEngine”项目。
注意: 您正在动态链接,因此需要链接opengl32。抱歉,误读了。