은 아마 VBA 때문에 호출 규칙 일치하지의 충돌
Declare Function dll_myFunction Lib "C:\link_to_my_dll.dll" _
Alias "myFunction" (ByVal arg As Long) As Long
Private Sub Try_Calling()
Dim myArg As Long
myArg = 150
dll_myFunction myArg
End Sub
이미 정수로 유형을 변경하려고, 등? Visual Studio 2015를 사용하여 DLL 예제를 만들고 Excel 문서에서 성공적으로 호출했습니다.
Private Declare Function GetSign Lib "DLL_declaration.dll" _
(ByVal value As Long) As Long
Sub DLL_call()
Dim myArg As Long
Dim retVal As Long
myArg = 150
retVal = GetSign(3)
MsgBox (retVal)
End Sub
귀하의 실수는 C++ 코드에서 __stdcall을 지정하지 않은 점이다
#include <Windows.h>
enum NumSign {
ns_undefined = 0,
ns_plus,
ns_minus,
};
__declspec(dllexport) NumSign __stdcall GetSign(int value) {
if(value > 0)
return ns_plus;
if(value < 0)
return ns_minus;
return ns_undefined;
}
가 여기 내 VBA 코드 :
여기 내 DLL 코드입니다. 나를 위해 그것은 지금 잘 작동합니다.