如何解决Visual C ++ LNK2011:未链接到预编译对象但是我链接了
我正在尝试第一次使用预编译的标头。使用命令行。就是这样:
cl /Yu"pch.h" src/main.cpp src/shader.cpp src/camera.cpp /std:c++17 /MT -EHsc glfw3.lib glew32.lib GlU32.lib OpenGL32.lib -I include /link "pch.obj" /LIBPATH:"C:\Users\yuryi\Desktop\C++\CMDOGL\lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /OUT:"C:\Users\user\Desktop\C++\CMDOGL\a.exe" /MACHINE:X64 /nologo
但是它打印:pch.obj : LNK2011: precompiled object not linked in. image may not run
。我不知道如何链接。我想我使用/ link“ pch.obj”做到了。注意:/Yc"pch.h“成功
文件结构:
- main.cpp
- pch.cpp
- pch.h
- shader.cpp
- shader.h
- camera.cpp
- camera.h
pch.cpp
只是#include "pch.h"
。 pch.h包括项目所需的一切。所有其他文件仅包含pch.h
。
我尝试过的事情:
- 搜索2个小时(MS文档等)
- 以不同方式调整命令行
解决方法
我通过以下命令序列解决了这个问题:
cl /c /Yc"pch.h" src/pch.cpp /std:c++17 /MT -EHsc -I include /link /nologo
cl /c /Yu"stdafx.h" src/main.cpp /std:c++17 /MT -EHsc -I include /link /nologo
cl /c /Yu"stdafx.h" src/camera.cpp /std:c++17 /MT -EHsc -I include /link /nologo
cl /c /Yu"stdafx.h" src/shader.cpp /std:c++17 /MT -EHsc -I include /link /nologo
并使用预编译的头文件快速编译源文件:
cl /Yu"pch.h" src/main.cpp src/shader.cpp src/camera.cpp /std:c++17 /MT -EHsc glfw3.lib glew32.lib GlU32.lib OpenGL32.lib -I include /link /out:a.exe stdafx.obj /LIBPATH:"lib" "kernel32.lib" "user32.lib" "gdi32.lib" "shell32.lib" /MACHINE:X64 /nologo
我不太清楚它是如何工作的,但是它解决了问题。
,->要链接目标文件,您需要使用link / out objectfile.obj。它是Microsoft文档中引用的正确方法。 ->甚至认为如果遇到这种令人讨厌的错误,请尝试此链接 https://docs.microsoft.com/en-us/cpp/build/reference/linking?view=vs-2019
->此页面包含所有CMD链接内容 https://docs.microsoft.com/en-us/cpp/build/reference/linker-options?view=vs-2019
您还可以使用/ WHOLEARCHIVE,此命令采用目标文件库的路径。
->此页面包含/ WHOLEARCHIVE资料 https://docs.microsoft.com/en-us/cpp/build/reference/wholearchive-include-all-library-object-files?view=vs-2019
还有另一种链接目标文件/ Fo命令的方法。该命令再次获取目标文件的路径值
-> / Fo的东西 https://docs.microsoft.com/en-us/cpp/build/reference/fo-object-file-name?view=vs-2019
->我正在添加此链接,因为我认为该行命令中可能隐藏了一些错误的命令。 https://docs.microsoft.com/en-us/cpp/build/creating-precompiled-header-files?view=vs-2019 上面的文件包含Visual Studio和MSVC ++编译器中的预编译文件
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。