Jan 24

C#で作ったdllをなでしこで使えるようなプラグインを作ってみた(失敗編)

前々回前回の続きです。

C++/CLIからC#のdllを呼び出せることが分かったので、いよいよなでしこプラグインを作ってみました。

C#のコードは前回と同じものを用いました。

なでしこのSDKは前々回作ったものを用い、C#のdllを呼び出せるように前回と同様、C#のdllを参照した後、
nadesiko9_3
Plugin.cppの一部を以下のように書き換えました

PHiValue __stdcall sample01(DWORD param) {
	PHiValue result;
	ClassLibrary1::Class1::Method1();
	result = nako_var_new(NULL);
	hi_setStr(result, "abc", sizeof("abc"));
	return result;
}
NAKO_API(void) ImportNakoFunction(void) {
	// ユーザー命令の追加
	nako_addFunction("sample01","", sample01, 0);
}


なでしこ側のソースは以下のようにして呼び出してみました
結果=sample01
結果を言う


これでダイアログボックスに「method1」が表示され、続いて「abc」が表示されればOKです。

しかし・・・結果は
nadesiko10_1

のように外部例外 E0434F4Dを出力してちゃんと動きませんでしたorz
この例外はtry...catchで掴もうとしても掴めません。どうも処理の関数(ここではsample01)に入った瞬間にエラーを返してしまうようです。ちなみにこのコードでググっても原因は理解できませんでした。

ということで、ここでストップしてしまいました><。ガックシ。

解決策が見つかったら続きます。

| comment(0)