Visual Studio 11开发人员预览版中的BitScanForward64问题

时间:2011-12-24 21:09:39

标签: c++ visual-studio intrinsics

我在C中编写任何东西都是新手。我正在编写一个辅助DLL(从C#调用),它执行二进制操作。我得到一个'标识符'BitScanForward64“未定义”错误。 32位版本可用。我想这是因为我创建了一个Win32 DLL。

然后我突然意识到64位版本可能仅适用于特定的64位DLL(我假设新项目向导中的“常规”),并且我可能需要一个单独的32位和64位dll。是这种情况,还是我可以使用一个同时运行BitScanForward和BitScanForward64内在函数的DLL,如果是这样,我该如何创建它呢?

这是我目前的代码:

// C Functions.cpp : Defines the exported functions for the DLL application.

#include "stdafx.h"
//#include <intrin.h>
//#include <winnt.h>

int _stdcall LSB_i32(unsigned __int32 x)
{
    DWORD result;
    BitScanForward(&result, x);
    return (int)result;
}

int _stdcall MSB_i32(unsigned __int32 x)
{
    DWORD result;
    BitScanReverse(&result, x);
    return (int)result; 
}

int _stdcall LSB_i64(unsigned __int64 x)
{
    DWORD result;
    BitScanForward64(&result, x);
    return (int)result;
}

int _stdcall MSB_i64(unsigned __int64 x)
{
    DWORD result;
    BitScanReverse64(&result, x);
    return (int)result;
}

1 个答案:

答案 0 :(得分:2)

可以创建一个DLL来保存这两个操作,但它可能只是一个x64的DLL(因此只能在64位进程中的64位操作系统上使用),如表{ {3}}(另请注意,内在函数的前缀为_BitScan*64函数可能需要此函数,无论如何都可以使用它。

here详细信息在Visual Studio中创建基于x64的项目,您应该可以从中创建您的dll。