【问题标题】:scan a page via WIA in vc++ got an error在 vc++ 中通过 WIA 扫描页面时出错
【发布时间】:2013-06-06 09:00:50
【问题描述】:

我在微软的“WIA 教程”页面看到了这种编码方式,但是 vc++ 不允许我编译它!总是出现一些错误!

#include "stdafx.h"
#include <Strsafe.h>
#include <Wia.h>
#include <WinError.h>

bool CreateWiaDeviceManager( IWiaDevMgr2 **ppWiaDevMgr ){
//
// Validate arguments
//
if (NULL == ppWiaDevMgr)
{
    return E_INVALIDARG;
}
//
// Initialize out variables
//
*ppWiaDevMgr = NULL;

//
// Create an instance of the device manager
//


//Vista or later:
HRESULT hr = CoCreateInstance( CLSID_WiaDevMgr2, NULL, CLSCTX_LOCAL_SERVER, IID_IWiaDevMgr2, (void**)ppWiaDevMgr ); 

//
// Return the result of creating the device manager
//
return SUCCEEDED(hr);
}

有错误:

1>WIAScanner.cpp(11):错误 C2065:“IWiaDevMgr2”:未声明的标识符 1>WIAScanner.cpp(11): 错误 C2065: 'ppWiaDevMgr' : 未声明的标识符 1>WIAScanner.cpp(11): error C2448: 'CreateWiaDeviceManager' : function-style initializer 似乎是一个函数定义

感谢您的关注。

【问题讨论】:

    标签: c++ visual-c++ wia


    【解决方案1】:

    IWiaDevMgr2 仅在 Windows Vista 或更高版本中可用,因此您需要适当地定位您的项目:_WIN32_WINNT 需要定义为 0x0600 或更高版本。

    【讨论】:

    • 你需要做对,它会起作用的。您必须尽早定义_WIN32_WINNT,通过项目设置或stdafx.h,具体取决于您的项目布局。
    • 通过项目设置将 'WIN32_WINNT' 设置为 0x0600 后,我遇到了太多错误,例如:' __out_z LPSTR lpString1, // deprecated: annotation is as well as it got ' 或 '1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winbase.h(6141):错误 C2226:语法错误:意外类型 'LPWSTR''
    • 提示:您可以创建一个通常具有必要定义的新项目(明确地,或通过包含&lt;sdkdefs.h&gt; 等),然后将您的代码复制到那里。
    • 不幸的是我不知道该怎么做。顺便说一句,感谢您的帮助@Roman R.
    猜你喜欢
    • 2010-11-14
    • 2011-04-05
    • 2012-02-07
    • 2018-08-06
    • 2015-08-24
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多