Я пытаюсь создать dll в смешанном режиме с несколькими экспортированными функциями для вызова управляемого кода, скажем, из Delphi и C ++.
Я получил это, но теперь я получаю только System.StackoverflowException вотладчик и мне интересно, что я делаю не так.
Код довольно прост
unmanaged.h
#pragma once
#pragma unmanaged
#include <Windows.h>
typedef void (*ByteCallback)(unsigned char * bytes, int len);
namespace Something {
extern "C"{
__declspec(dllexport) void InteropInit(ByteCallback responseCallback, ByteCallback requestInformationCallback);
}
};
unmanaged.cpp
#include "Stdafx.h"
#include "Managed.h"
#include "Unmanaged.h"
#pragma unmanaged
namespace Something{
void InteropInit(ByteCallback responseCallback, ByteCallback requestInformationCallback) {
Something::ManagedInit();
}
};
managed.h
#include "Stdafx.h"
#pragma managed
namespace Something{
void ManagedInit();
};
managed.cpp
#include "Stdafx.h"
#include "Managed.h"
#include <string>
#pragma managed
namespace Something {
void ManagedInit() {
System::Console::WriteLine("Hallo");
};
};
Stacktrace (это продолжается и продолжается до тех пор, пока визуальная студия не покажет больше строк)
ntdll.dll!_RtlpCallVectoredHandlers@12() + 0x2f244 bytes
ntdll.dll!_RtlCallVectoredExceptionHandlers@8() + 0x12 bytes
ntdll.dll!_RtlDispatchException@8() + 0x19 bytes
ntdll.dll!_KiUserExceptionDispatcher@8() + 0xf bytes
ntdll.dll!_RtlpCallVectoredHandlers@12() + 0x2f244 bytes
ntdll.dll!_RtlCallVectoredExceptionHandlers@8() + 0x12 bytes
ntdll.dll!_RtlDispatchException@8() + 0x19 bytes
ntdll.dll!_KiUserExceptionDispatcher@8() + 0xf bytes
Может кто-нибудь помочь мне?