2011-12-24 13 views
0

私はC言語で全く新しいことを書いています。バイナリ操作を実行するヘルパーDLL(C#から呼び出される)を作成しています。私は '識別子' BitScanForward64は "定義されていません"エラーが発生します。 32ビットバージョンが利用可能です。 Win32 DLLを作成したからです。Visual Studio 11 Developer PreviewでのBitScanForward64の問題

その後、64ビット版は特定の64ビットDLL(私は新しいプロジェクトウィザードでは「一般」と仮定します)にしか使えない可能性があり、別の32ビットと64ビットのDLLが必要になることがあります。この場合、またはBitScanForwardとBitScanForward64の両方の組み込み関数を実行するDLLを1つ持つことができますか?その場合、どうすればその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

はい、x64またはItaniumはMSDNページに記載されている必要があります。 –

+0

これで2つのDLLが必要になります。 64ビットDLLを作成するにはどうすればよいですか?それはオプションではないようです。 – IamIC

+1

@IanC:http://msdn.microsoft.com/en-us/library/9yb4317s(v=VS.100).aspx – Necrolis

答えて

2

これらの操作の両方を保持するDLLを作成することは可能であるが、それはその後、唯一の64ビットOS上でx64の唯一のDLL(したがって、使用可能になりますテーブルhereに示されているように(intrisicsには_という接頭辞が付いていますが、BitScan*64関数が必要な場合もありますが、それらはすべて関係なく動作します)。

This link詳細Visual Studioでx64ベースのプロジェクトを作成すると、そこからdllを作成することができます。

関連する問題