2015-11-23 2 views
0

Я использовал ниже код (получил его с веб-сайта) в Access 2013. Он работал без каких-либо проблем.Несоответствие типа StrPtr в режиме 64 бит

Private Declare Function GdipCreateBitmapFromFile Lib "gdiplus.dll" (ByVal FileName As Long, bitmap As Long) As Long 

If GdipCreateBitmapFromFile(StrPtr(sFileName), hPic) = 0 Then .... 

После того, как я удаляю 32-битный компонент для 64-разрядной установки Access 2013, я получаю ошибку компилятора. Я добавляю PtrSafe после Declare, и компилятор будет в порядке.

Private Declare PtrSafe Function GdipCreateBitmapFromFile Lib "gdiplus.dll" (ByVal FileName As Long, bitmap As Long) As Long 

If GdipCreateBitmapFromFile(StrPtr(sFileName), hPic) = 0 Then .... 

Но, у него будет ошибка времени выполнения - несоответствие типа в StrPtr. Не знаю, как его решить.

ответ

3

Использование LongPtr для 64-бит вместо Long.

Private Declare PtrSafe Function GdipCreateBitmapFromFile Lib "gdiplus.dll" (ByVal FileName As LongPtr, bitmap As Long) As Long 
Смежные вопросы