EnumPrinters 示例的链接器问题
Linker issue with EnumPrinters Sample
首先,我知道有很多关于此功能的主题,但我没有找到任何关于这个特定问题的信息,抱歉,如果我重复...
我一直在用 C++ 开发一个与打印机一起工作的程序,我需要获取系统中的打印机列表。
我正在使用 EnumPrinters API,我遇到了一个我不明白的编译错误。
这是我的代码:
#include <iostream>
#include <windows.h>
#include <winspool.h>
using namespace std;
int main()
{
PRINTER_INFO_5 pi;
PBYTE buffer[99];
DWORD bufferSize = 0;
DWORD bufferNeeded = 0;
DWORD Entries = 0;
bool r;
r = EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, NULL, 5, NULL, bufferSize, &bufferNeeded, &Entries);
if (!r)
{ cout << "No printer found" << endl; }
else { cout << "Found printers" << endl; }
}
当我尝试编译(带 gcc 的 codeBlocks 典型安装)时,出现此错误:
C:\Programação\C++\lab\main.cpp 18 undefined reference to 'EnumPrintersA@28'
我认为这可能是链接器的问题,但我不知道如何解决...
谢谢!
已解决!
经过一些帮助,我发现问题是我没有导入正确的库。我认为包括 header 就足够了。
我需要关注 these steps(使用 'winspool' 而不是 'gdi32')。
对了,加了'winspool.lib'也没有解决。使用 'winspool' 代替(没有 '.lib')
您的链接器缺少 .lib
文件。如果您在 MSDN 文档中查找 EnumPrinters
,您将看到必须添加哪个库(在页面底部的某处,就在评论之前)。
在本例中为 Winspool.lib
。对于 gcc,添加 commandline 选项:-lwinspool
.
首先,我知道有很多关于此功能的主题,但我没有找到任何关于这个特定问题的信息,抱歉,如果我重复...
我一直在用 C++ 开发一个与打印机一起工作的程序,我需要获取系统中的打印机列表。
我正在使用 EnumPrinters API,我遇到了一个我不明白的编译错误。
这是我的代码:
#include <iostream>
#include <windows.h>
#include <winspool.h>
using namespace std;
int main()
{
PRINTER_INFO_5 pi;
PBYTE buffer[99];
DWORD bufferSize = 0;
DWORD bufferNeeded = 0;
DWORD Entries = 0;
bool r;
r = EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, NULL, 5, NULL, bufferSize, &bufferNeeded, &Entries);
if (!r)
{ cout << "No printer found" << endl; }
else { cout << "Found printers" << endl; }
}
当我尝试编译(带 gcc 的 codeBlocks 典型安装)时,出现此错误:
C:\Programação\C++\lab\main.cpp 18 undefined reference to 'EnumPrintersA@28'
我认为这可能是链接器的问题,但我不知道如何解决...
谢谢!
已解决!
经过一些帮助,我发现问题是我没有导入正确的库。我认为包括 header 就足够了。
我需要关注 these steps(使用 'winspool' 而不是 'gdi32')。
对了,加了'winspool.lib'也没有解决。使用 'winspool' 代替(没有 '.lib')
您的链接器缺少 .lib
文件。如果您在 MSDN 文档中查找 EnumPrinters
,您将看到必须添加哪个库(在页面底部的某处,就在评论之前)。
在本例中为 Winspool.lib
。对于 gcc,添加 commandline 选项:-lwinspool
.