1

我正在尝试进行跨平台编译以在 Linux 上构建一个项目,该项目将在 Windows 上使用。

但是我遇到了这些链接错误:

/usr/bin/ld: bin/Release-linux-x86_64/glad/libglad.a(glad.o):glad.c:(.text+0x2aa6): undefined reference to `__imp_GetProcAddress'
/usr/bin/ld: bin/Release-linux-x86_64/glad/libglad.a(glad.o):glad.c:(.text+0x4abf): undefined reference to `__imp_LoadLibraryW'
/usr/bin/ld: bin/Release-linux-x86_64/glad/libglad.a(glad.o):glad.c:(.text+0x4aec): undefined reference to `__imp_GetProcAddress'
/usr/bin/ld: bin/Release-linux-x86_64/glad/libglad.a(glad.o):glad.c:(.text+0x4b19): undefined reference to `__imp_FreeLibrary'

我正在使用这些标志来链接库:

LINKCMD = $(CXX) -o "$@" $(OBJECTS) $(RESOURCES) $(ALL_LDFLAGS) $(LIBS)
LIBS += bin/Release-linux-x86_64/glad/libglad.a bin/Release-linux-x86_64/GLFW/libGLFW.a
LDDEPS += bin/Release-linux-x86_64/GLFW/libGLFW.a bin/Release-linux-x86_64/glad/libglad.a
ALL_LDFLAGS += $(LDFLAGS) -L/usr/lib64 -m64 -s -lglfw -pthread -lGLU -lGL -lrt -lXrandr -lXxf86vm -lXi -lXinerama -lX11 -ldl

为了构建和编译库,我使用这些 premake 文件中的 makefile。

为高兴而预制:

project "Glad"
kind "StaticLib"
language "C"
staticruntime "on"

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

files
{
    "include/glad/glad.h",
    "include/KHR/khrplatform.h",
    "src/glad.c"
}

includedirs
{
    "include"
}

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

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

glfw 的预制:

project "GLFW"
kind "StaticLib"
language "C"

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

files
{
    "include/GLFW/glfw3.h",
    "include/GLFW/glfw3native.h",
    "src/glfw_config.h",
    "src/context.c",
    "src/init.c",
    "src/input.c",
    "src/monitor.c",
    "src/vulkan.c",
    "src/window.c"
}
filter "system:linux"
    pic "On"

    systemversion "latest"
    staticruntime "On"

    files
    {
        "src/x11_init.c",
        "src/x11_monitor.c",
        "src/x11_window.c",
        "src/xkb_unicode.c",
        "src/posix_time.c",
        "src/posix_thread.c",
        "src/glx_context.c",
        "src/egl_context.c",
        "src/osmesa_context.c",
        "src/linux_joystick.c"
    }

    defines
    {
        "_GLFW_X11"
    }

filter "system:windows"
    systemversion "latest"
    staticruntime "On"

    files
    {
        "src/win32_init.c",
        "src/win32_joystick.c",
        "src/win32_monitor.c",
        "src/win32_time.c",
        "src/win32_thread.c",
        "src/win32_window.c",
        "src/wgl_context.c",
        "src/egl_context.c",
        "src/osmesa_context.c"
    }

    defines 
    { 
        "_GLFW_WIN32",
        "_CRT_SECURE_NO_WARNINGS"
    }

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

filter "configurations:Release"
    runtime "Release"
    optimize "on"
  • 平台:Ubuntu
  • C++ 编译器:x86_64-w64-mingw32-g++
  • C 编译器:x86_64-w64-mingw32-gcc
4

0 回答 0