Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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++ 微软指纹SDK C++;winbio.lib不工作_C++_Visual Studio 2010_Winapi_Fingerprint - Fatal编程技术网

C++ 微软指纹SDK C++;winbio.lib不工作

C++ 微软指纹SDK C++;winbio.lib不工作,c++,visual-studio-2010,winapi,fingerprint,C++,Visual Studio 2010,Winapi,Fingerprint,我目前正在进行指纹验证项目,我已经正确配置了所有驱动程序。我使用的是微软指纹阅读器,当我在登录时用软件DigitalPersona测试它时,它就可以工作了。我目前使用的是windows sdk 7.0A,我使用的是Microsoft Visual Studio 2010 我为此代码创建了一个“空项目”,并将其他库依赖项链接到windows sdk,并在“输入”下键入winbio.lib以获取其他依赖项。我犯了这个错误 错误C2065:“CaptureSampleCallback”:未声明的标识符

我目前正在进行指纹验证项目,我已经正确配置了所有驱动程序。我使用的是微软指纹阅读器,当我在登录时用软件DigitalPersona测试它时,它就可以工作了。我目前使用的是windows sdk 7.0A,我使用的是Microsoft Visual Studio 2010

我为此代码创建了一个“空项目”,并将其他库依赖项链接到windows sdk,并在“输入”下键入winbio.lib以获取其他依赖项。我犯了这个错误

错误C2065:“CaptureSampleCallback”:未声明的标识符

下面是代码,我完全遵循了微软的示例,但它无法工作=(

#包括
#包括
#包括
#包括
HRESULT CaptureSampleWithCallback(布尔b取消)
{
HRESULT hr=S_正常;
WINBIO_SESSION_HANDLE sessionHandle=NULL;
//连接到系统池。
hr=WinBioOpenSession(
WINBIO_类型_指纹,//服务提供商
WINBIO\u池\u系统,//池类型
WINBIO_标志_原始,//原始访问
NULL,//生物识别单元ID数组
0,//生物识别单元ID的计数
WINBIO_DB_DEFAULT,//默认数据库
&sessionHandle//[out]会话句柄
);
如果(失败(小时))
{
wprintf_s(L“\n WinBioOpenSession失败。hr=0x%x\n”,hr);
转到e_出口;
}
//异步捕获生物特征样本。
wprintf_s(L“\n调用WinBioCaptureSampleWithCallback”);
hr=WinBioCaptureSampleWithCallback(
sessionHandle,//打开会话句柄
WINBIO\u无\u用途\u可用,//样本的预期用途
WINBIO\u数据\u标志\u原始,//样本格式
CaptureSampleCallback,//回调函数
空//可选上下文
);
如果(失败(小时))
{
wprintf_s(L“\n WinBioCaptureSampleWithCallback失败”);
wprintf_s(L“hr=0x%x\n”,hr);
转到e_出口;
}
wprintf_s(L“\n滑动传感器…\n”);
//如果设置了bCancel标志,则取消捕获过程。
如果(b取消)
{
wprintf_s(L“\n启动取消计时器…”);
睡眠(7000);
wprintf_s(L“\n调用WinBioCancel\n”);
hr=WinBioCancel(会话句柄);
如果(失败(小时))
{
wprintf_s(L“\n WinBioCancel失败。hr=0x%x\n”,hr);
转到e_出口;
}
}
//等待异步捕获过程完成
//或者被取消。
hr=WinBioWait(会话句柄);
如果(失败(小时))
{
wprintf_s(L“\n WinBioWait失败。hr=0x%x\n”,hr);
}
紧急出口:
if(sessionHandle!=NULL)
{
WinBioCloseSession(会话句柄);
sessionHandle=NULL;
}
wprintf_s(L“\n按任意键退出…”);
_getch();
返回人力资源;
}
//------------------------------------------------------------------------
//以下函数是WinBioCaptureSampleWithCallback的回调函数。
//该功能过滤来自生物识别子系统的响应,并
//将结果写入控制台窗口。
//
无效回调CaptureSampleCallback(
__在_optPVOID CaptureCallbackContext中,
__在HRESULT操作状态中,
__在WINBIO\u UNIT\u ID UnitId中,
__在计算(样本化)PWINBIO BIR样本中,
__在尺寸和样本方面,
__在WINBIO_拒绝_详情拒绝详情中
)
{
未引用的_参数(CaptureCallbackContext);
wprintf_s(L“\n CaptureSampleCallback正在执行”);
wprintf_s(L“\n刷卡已处理-单元ID:%d”,单元ID);
如果(失败(操作状态))
{
如果(操作状态==WINBIO\u E\u坏的\u捕获)
{
wprintf_s(L“\n错误捕获;原因:%d\n”,拒绝详细信息);
}
其他的
{
wprintf_s(L“\n WinBioCaptureSampleWithCallback失败”);
wprintf_s(L“OperationStatus=0x%x\n”,OperationStatus);
}
转到e_出口;
}
wprintf_s(L“\n捕获了%d个字节。\n”,采样);
紧急出口:
if(示例!=NULL)
{
生物树(样品);
样本=NULL;
}
}

您有两种解决方案:

A.调用
CaptureSampleCallback


B.将函数的定义移动到
CaptureSampleCallback
之前
CaptureSampleWithCallback

尝试将
CaptureSampleCallback
声明放在
CaptureSampleWithCallback
之前!非常感谢!这解决了我的问题。不过我还得问一个noob问题。似乎无法解决它=(“1>链接:致命错误LNK1561:必须定义入口点”我应该将“子系统”更改为指向CaptureSampleWithCallBack right??但它似乎无法工作。我不知道要填写什么。当我选择“windows”选项时,它也无法工作。知道如何解决此问题吗?谢谢您的帮助!=我想知道您是否定义了main()(或等效)函数。不,我没有。很抱歉,我刚刚开始尝试捕获样本的此函数。我需要一个主函数来执行此操作吗?我在这里指的是microsoft的示例代码,我完全遵循了此代码。CaptureSample()等效的主函数是否已经正确?我认为另一个问题帖子是合适的,因为代码不同。我将发布另一个问题帖子,希望您能指导我=D谢谢
#include <Windows.h>
#include <Conio.h>
#include <Stdio.h>
#include <WinBio.h>


HRESULT CaptureSampleWithCallback(BOOL bCancel)
{

HRESULT hr = S_OK;
WINBIO_SESSION_HANDLE sessionHandle = NULL;

// Connect to the system pool. 
hr = WinBioOpenSession( 
        WINBIO_TYPE_FINGERPRINT,    // Service provider
        WINBIO_POOL_SYSTEM,         // Pool type
        WINBIO_FLAG_RAW,            // Raw access
        NULL,                       // Array of biometric unit IDs
        0,                          // Count of biometric unit IDs
        WINBIO_DB_DEFAULT,          // Default database
        &sessionHandle              // [out] Session handle
        );
if (FAILED(hr))
{
    wprintf_s(L"\n WinBioOpenSession failed. hr = 0x%x\n", hr);
    goto e_Exit;
}

// Capture a biometric sample asynchronously.
wprintf_s(L"\n Calling WinBioCaptureSampleWithCallback ");
hr = WinBioCaptureSampleWithCallback(
        sessionHandle,                  // Open session handle
        WINBIO_NO_PURPOSE_AVAILABLE,    // Intended use of the sample
        WINBIO_DATA_FLAG_RAW,           // Sample format
        CaptureSampleCallback,          // Callback function
        NULL                            // Optional context
        );
if (FAILED(hr))
{
    wprintf_s(L"\n WinBioCaptureSampleWithCallback failed. ");
    wprintf_s(L"hr = 0x%x\n", hr);
    goto e_Exit;
}
wprintf_s(L"\n Swipe the sensor ...\n");

// Cancel the capture process if the bCancel flag is set.
if (bCancel)
{
    wprintf_s(L"\n Starting CANCEL timer...");
    Sleep( 7000 );

    wprintf_s(L"\n Calling WinBioCancel\n");
    hr = WinBioCancel( sessionHandle );
    if (FAILED(hr))
    {
        wprintf_s(L"\n WinBioCancel failed. hr = 0x%x\n", hr);
        goto e_Exit;
    }
}

// Wait for the asynchronous capture process to complete 
// or be canceled.
hr = WinBioWait( sessionHandle );
if (FAILED(hr))
{
    wprintf_s(L"\n WinBioWait failed. hr = 0x%x\n", hr);
}


e_Exit:

if (sessionHandle != NULL)
{
    WinBioCloseSession(sessionHandle);
    sessionHandle = NULL;
}

wprintf_s(L"\n Press any key to exit...");
_getch();

return hr;
}

//------------------------------------------------------------------------
// The following function is the callback for WinBioCaptureSampleWithCallback.
// The function filters the response from the biometric subsystem and 
// writes a result to the console window.
//
VOID CALLBACK CaptureSampleCallback(
__in_opt PVOID CaptureCallbackContext,
__in HRESULT OperationStatus,
__in WINBIO_UNIT_ID UnitId,
__in_bcount(SampleSize) PWINBIO_BIR Sample,
__in SIZE_T SampleSize,
__in WINBIO_REJECT_DETAIL RejectDetail
)
{
UNREFERENCED_PARAMETER(CaptureCallbackContext);

wprintf_s(L"\n CaptureSampleCallback executing");
wprintf_s(L"\n Swipe processed - Unit ID: %d", UnitId);

if (FAILED(OperationStatus))
{
    if (OperationStatus == WINBIO_E_BAD_CAPTURE)
    {
        wprintf_s(L"\n Bad capture; reason: %d\n", RejectDetail);
     }
    else
    {
        wprintf_s(L"\n WinBioCaptureSampleWithCallback failed. ");
        wprintf_s(L" OperationStatus = 0x%x\n", OperationStatus);
    }
    goto e_Exit;
}

wprintf_s(L"\n Captured %d bytes.\n", SampleSize);

e_Exit:

if (Sample != NULL)
{
    WinBioFree(Sample);
    Sample = NULL;
}
}
VOID CALLBACK CaptureSampleCallback(
__in_opt PVOID CaptureCallbackContext,
__in HRESULT OperationStatus,
__in WINBIO_UNIT_ID UnitId,
__in_bcount(SampleSize) PWINBIO_BIR Sample,
__in SIZE_T SampleSize,
__in WINBIO_REJECT_DETAIL RejectDetail
);