Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在命令行上使用Visual Studio编译时如何包含库?_C++_C_Winapi_Visual C++_Command Line - Fatal编程技术网

C++ 在命令行上使用Visual Studio编译时如何包含库?

C++ 在命令行上使用Visual Studio编译时如何包含库?,c++,c,winapi,visual-c++,command-line,C++,C,Winapi,Visual C++,Command Line,我正试图在命令行上使用VisualStudio2008构建一个程序。 看完之后。 我尝试了以下方法: 运行vcvaralls.bat以设置环境: "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" 编写了这个简单的C++应用程序: #define _WIN32_WINNT 0x501 #include <windows.h> INT WINAPI WinMain(HINSTANCE hInsta

我正试图在命令行上使用VisualStudio2008构建一个程序。 看完之后。 我尝试了以下方法:

运行vcvaralls.bat以设置环境:

"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"

编写了这个简单的C++应用程序:

#define _WIN32_WINNT 0x501
#include <windows.h>
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine, int nCmdShow)
{
    MessageBoxA(0,"Hello","Hello",MB_OK);

    return 0;
}`
这种情况发生了:

/out:simple.exe
simple.obj
simple.obj : error LNK2019: unresolved external symbol __imp__MessageBoxA@16 referenced in function _WinMain@16
simple.exe : fatal error LNK1120: 1 unresolved externals
这让我相信我需要包含user32.lib或类似的内容。
我无法从VisualStudio手册中找到如何做到这一点。

没错,
MessagBoxA
是在
User32.lib
中定义的,您需要将代码与之链接。您可以向
CL
编译器提供链接器选项,它会将其传递给链接器。您只需将
User32.lib
添加到编译字符串中:
cl/EHsc/GA simple.cpp User32.lib

是,要使用MessageBox,您至少需要链接User32.lib,如图所示。使用:


/MT选择运行时库。在本例中,我使用了多线程静态库

您可能想寻找一些似乎与链接有关的工具。我经常发现使用VisualStudioIDE很有帮助。一旦我在其中构建了我的项目,我就可以转到项目属性中的最后一个选项卡,查看它决定放入的所有命令行选项,然后为我的命令行复制/粘贴这些选项。这是一个好主意,jia103。打开帮助索引并查找makefile向导。您也可以右键单击项目名称,单击属性,配置管理器,然后查看命令行选项。@Someprogrammerdude,我想指出的是,在发布此问题之前,我花了好几个小时筛选编译器上的MSDN文档。事实证明,没有特殊的选项,您只需在源文件中包含库名称。这不是我所期望的,因此也不是我想要的。
/out:simple.exe
simple.obj
simple.obj : error LNK2019: unresolved external symbol __imp__MessageBoxA@16 referenced in function _WinMain@16
simple.exe : fatal error LNK1120: 1 unresolved externals
cl /EHsc /GA /MT simple.cpp User32.lib