Я совершенно не новичок в написании чего-либо в C. Я пишу вспомогательную DLL (для вызова из C#), которая выполняет двоичную манипуляцию. Я получаю «идентификатор». Ошибка BitScanForward64 «undefined». Доступна 32-разрядная версия. Я полагаю, что это потому, что я создал DLL Win32.Проблема с BitScanForward64 в Visual Studio 11 Developer Preview
Тогда мне стало ясно, что 64-разрядная версия может быть доступна только для конкретной 64-битной DLL (я предполагаю, что «General» в новом мастере проекта), и мне может понадобиться отдельная 32-битная и 64-разрядная dll , В этом случае, или я могу иметь одну DLL, которая запускает как свойства BitScanForward, так и BitScanForward64, и если да, то как мне ее создать?
Вот мой текущий код:
// 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;
}
Да, x64 или Itanium, как указано на странице MSDN. –
Итак, нужны две библиотеки DLL. Как создать 64-битную DLL? Кажется, это не вариант. – IamIC
@IanC: http://msdn.microsoft.com/en-us/library/9yb4317s(v=VS.100).aspx – Necrolis