链接现有的C++巴泽尔的静态图书馆失败了
我正在Windows上写一个OpenGL程序。
我想链接预编译的glew32.lib,但失败了几个小时。
In WORKSPACE, a http_archive
uses to download GLEW32.lib
http_archive(
name = "glew",
build_file = "@//:thirdparty/glew.BUILD",
sha256 = "ea6b14a1c6c968d0034e61ff6cb242cff2ce0ede79267a0f2b47b1b0b652c164",
strip_prefix = "glew-2.2.0",
urls = ["https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0-win32.zip"],
)
GLEW.BUILD as follow
package(default_visibility=["//visibility:public"])
load("@rules_cc//cc:defs.bzl", "cc_binary")
cc_import(
name = "glew_lib",
static_library = "lib/Release/x64/glew32s.lib",
hdrs = glob([
"include/GL/*.h"
]),
)
cc_library(
name = "glew"
includes = ["include"],
deps = ["glew_lib"]
)
Depending binary as follow
cc_binary(
name = "window",
srcs = [
"window.cc",
],
deps = [
"//engine:debug",
"//engine:gl",
"//playground:playground",
"@fmt",
"@glew",
"@glfw",
"@glm",
"@imgui",
],
linkstatic = 1
)
The link param file C:\Program Files\Microsoft Visual Studio\2022\Community\VC\工具\ msvc \ 14.32.31326 \ bin \ hostx64 \ x64 \ link.exe @bazel-out/x64_windows-fastbuild/bin/playground/playground/playground/window.exe-2.params
glew lib是奇怪的。我不知道外部/glew/lib/repares/x64/glew32s.lib
是如何生成的。但是glew.lib尚未加入链接。
/nologo
/OUT:bazel-out/x64_windows-fastbuild/bin/playground/window.exe
bazel-out/x64_windows-fastbuild/bin/playground/_objs/window/window.obj
bazel-out/x64_windows-fastbuild/bin/playground/playground.lib
bazel-out/x64_windows-fastbuild/bin/playground/scene/scenes.lib
bazel-out/x64_windows-fastbuild/bin/playground/pass.lib
bazel-out/x64_windows-fastbuild/bin/playground/object/object.lib
bazel-out/x64_windows-fastbuild/bin/engine/framebuffer/framebuffer.lib
bazel-out/x64_windows-fastbuild/bin/playground/context.lib
bazel-out/x64_windows-fastbuild/bin/engine/repo/repo.lib
bazel-out/x64_windows-fastbuild/bin/engine/engine.lib
bazel-out/x64_windows-fastbuild/bin/engine/primitive/primitive.lib
bazel-out/x64_windows-fastbuild/bin/engine/mesh.lib
bazel-out/x64_windows-fastbuild/bin/engine/gl.lib
bazel-out/x64_windows-fastbuild/bin/external/assimp/assimp.lib
bazel-out/x64_windows-fastbuild/bin/engine/util.lib
bazel-out/x64_windows-fastbuild/bin/engine/proto/config_proto.lib
bazel-out/x64_windows-fastbuild/bin/external/com_github_protocolbuffers_protobuf/protobuf.lib
bazel-out/x64_windows-fastbuild/bin/external/com_github_protocolbuffers_protobuf/protobuf_lite.lib
bazel-out/x64_windows-fastbuild/bin/external/com_github_google_glog/glog.lib
bazel-out/x64_windows-fastbuild/bin/external/com_github_gflags_gflags/gflags.lib
bazel-out/x64_windows-fastbuild/bin/external/fmt/fmt.lib
external/glew/lib/Release/x64/glew32s.lib
bazel-out/x64_windows-fastbuild/bin/external/imgui/imgui.lib
bazel-out/x64_windows-fastbuild/bin/external/glfw/glfw_src.lib
/SUBSYSTEM:CONSOLE
-ignore:4221
-ignore:4221
-DEFAULTLIB:user32.lib
-DEFAULTLIB:gdi32.lib
-DEFAULTLIB:shell32.lib
/MACHINE:X64
/DEFAULTLIB:msvcrt.lib
/DEBUG:FASTLINK
/INCREMENTAL:NO
有人可以帮助我链接是否存在GLEW32.LIB成功?
I am writing a OpenGL program on Windows.
I want to link precompiled GLEW32.lib, but failed and failed for a couple of hours.
In WORKSPACE, a http_archive
uses to download GLEW32.lib
http_archive(
name = "glew",
build_file = "@//:thirdparty/glew.BUILD",
sha256 = "ea6b14a1c6c968d0034e61ff6cb242cff2ce0ede79267a0f2b47b1b0b652c164",
strip_prefix = "glew-2.2.0",
urls = ["https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0-win32.zip"],
)
GLEW.BUILD as follow
package(default_visibility=["//visibility:public"])
load("@rules_cc//cc:defs.bzl", "cc_binary")
cc_import(
name = "glew_lib",
static_library = "lib/Release/x64/glew32s.lib",
hdrs = glob([
"include/GL/*.h"
]),
)
cc_library(
name = "glew"
includes = ["include"],
deps = ["glew_lib"]
)
Depending binary as follow
cc_binary(
name = "window",
srcs = [
"window.cc",
],
deps = [
"//engine:debug",
"//engine:gl",
"//playground:playground",
"@fmt",
"@glew",
"@glfw",
"@glm",
"@imgui",
],
linkstatic = 1
)
The link param file C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX64\x64\link.exe @bazel-out/x64_windows-fastbuild/bin/playground/window.exe-2.params
's GLEW lib is odd. I don't know how external/glew/lib/Release/x64/glew32s.lib
is generated. But GLEW.lib hadn't join linking.
/nologo
/OUT:bazel-out/x64_windows-fastbuild/bin/playground/window.exe
bazel-out/x64_windows-fastbuild/bin/playground/_objs/window/window.obj
bazel-out/x64_windows-fastbuild/bin/playground/playground.lib
bazel-out/x64_windows-fastbuild/bin/playground/scene/scenes.lib
bazel-out/x64_windows-fastbuild/bin/playground/pass.lib
bazel-out/x64_windows-fastbuild/bin/playground/object/object.lib
bazel-out/x64_windows-fastbuild/bin/engine/framebuffer/framebuffer.lib
bazel-out/x64_windows-fastbuild/bin/playground/context.lib
bazel-out/x64_windows-fastbuild/bin/engine/repo/repo.lib
bazel-out/x64_windows-fastbuild/bin/engine/engine.lib
bazel-out/x64_windows-fastbuild/bin/engine/primitive/primitive.lib
bazel-out/x64_windows-fastbuild/bin/engine/mesh.lib
bazel-out/x64_windows-fastbuild/bin/engine/gl.lib
bazel-out/x64_windows-fastbuild/bin/external/assimp/assimp.lib
bazel-out/x64_windows-fastbuild/bin/engine/util.lib
bazel-out/x64_windows-fastbuild/bin/engine/proto/config_proto.lib
bazel-out/x64_windows-fastbuild/bin/external/com_github_protocolbuffers_protobuf/protobuf.lib
bazel-out/x64_windows-fastbuild/bin/external/com_github_protocolbuffers_protobuf/protobuf_lite.lib
bazel-out/x64_windows-fastbuild/bin/external/com_github_google_glog/glog.lib
bazel-out/x64_windows-fastbuild/bin/external/com_github_gflags_gflags/gflags.lib
bazel-out/x64_windows-fastbuild/bin/external/fmt/fmt.lib
external/glew/lib/Release/x64/glew32s.lib
bazel-out/x64_windows-fastbuild/bin/external/imgui/imgui.lib
bazel-out/x64_windows-fastbuild/bin/external/glfw/glfw_src.lib
/SUBSYSTEM:CONSOLE
-ignore:4221
-ignore:4221
-DEFAULTLIB:user32.lib
-DEFAULTLIB:gdi32.lib
-DEFAULTLIB:shell32.lib
/MACHINE:X64
/DEFAULTLIB:msvcrt.lib
/DEBUG:FASTLINK
/INCREMENTAL:NO
Could someone help me to link existed GLEW32.lib success?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我的错。这不是巴泽尔的问题,也不是Glew的问题。 glew是指OpenGL扩展Wrangler Library。它不包含Origin OpenGL函数实施。
在将
linkopts = [“ -defaultlib:OpenGl32.lib”添加后,
添加到glew cc_library。每个都可以。链接错误如下。它们都是原始的OpenGL功能。
My fault. This is not bazel's issue or glew's issue. GLEW means The OpenGL Extension Wrangler Library. It doesn't contain the origin OpenGL function implements.
After adding
linkopts = ["-DEFAULTLIB:opengl32.lib"]
to glew cc_library. Every is OK.The link error as follow. They are all original OpenGL functions.