glfw示例文件编译不过的解决.思路在于观察到libcmt与msvcrt冲突
编译这个glfw示例文件时,总是一大堆链接错误:
#include <GLFW/glfw3.h>
#pragma comment(lib,"glfw3.lib")
int main(void)
{
GLFWwindow* window;
/* Initialize the library */
if (!glfwInit())
return -1;
/* Create a windowed mode window and its OpenGL context */
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}
/* Make the window's context current */
glfwMakeContextCurrent(window);
/* Loop until the user closes the window */
while (!glfwWindowShouldClose(window))
{
/* Render here */
glClear(GL_COLOR_BUFFER_BIT);
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* Poll for and process events */
glfwPollEvents();
}
glfwTerminate();
return 0;
}
找了半天,后来加了user32.lib
,gdi32.lib
,少了些链接错误.然后各种折腾,也搞不定.
一大堆如下错误:
glfw3.lib(wgl_context.obj) : error LNK2019: 无法解析的外部符号 __imp__SwapBuffers@4,该符号在函数 _swapBuffersWGL 中被引用
MSVCRT.lib(chandler4gs.obj) : error LNK2019: 无法解析的外部符号 __except_handler4_common,该符号在函数 __except_handler4 中被引用
示例.exe : fatal error LNK1120: 102 个无法解析的外部命令
后来才想到可能是动态链接与静态链接不匹配的问题
,以后只要是链接错误,都要往这方面想,即链接方式不匹配
.
这主要是直接就把别人的项目拿来编译.虽然都编译通过了.但编译方式不一样.或者可能是我用cmake生成编译文件时搞错了.不能选动态编译.要静态编译.可能cmake
的某个编译方式时没认真看.点错了.
然后就批量修改一大堆vcxproj
文件.
注意,两个替换:
MultiThreadedDebugDLL,MultiThreaded
MultiThreadedDLL,MultiThreaded
然后编译glfw成功.然后用这个编译成功的再编译上面的文件.vs就编译过了.但命令行未编译过,cl额外连接添加vs选项里面的额外连接.就成功了.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现