私は、デルファイとC++のマネージコードを呼び出すためにエクスポートされたいくつかの関数を持つ混合モードdllを作成しようとしています。マネージコードをアンマネージから呼び出すとき
私はそれを動作させましたが、今は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");
};
};
スタックトレース(これは、Visual Studioまでのと延々と続く文句を言わない、それ以上行を表示)
[email protected]() + 0x2f244 bytes
[email protected]() + 0x12 bytes
[email protected]() + 0x19 bytes
[email protected]() + 0xf bytes
[email protected]() + 0x2f244 bytes
[email protected]() + 0x12 bytes
[email protected]() + 0x19 bytes
[email protected]() + 0xf bytes
は、誰かが私を助けていただけますか?
どこかに例外がスローされているようです。あなたはデバッグを試みて、それを見つけましたか? – svick
あなたの実際のコードは 'responseCallback'と' requestInformationCallback'を使用していませんか、あるいはあなたの質問を単純化しましたか? – ildjarn
これはデバッガにあります。ここではstackoverflowexceptionとstacktraceを取得します。 – Thomas