Jan 24
C#で作ったdllをなでしこで使えるようなプラグインを作ってみた(失敗編)
前々回、前回の続きです。
C++/CLIからC#のdllを呼び出せることが分かったので、いよいよなでしこプラグインを作ってみました。
C#のコードは前回と同じものを用いました。
なでしこのSDKは前々回作ったものを用い、C#のdllを呼び出せるように前回と同様、C#のdllを参照した後、
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です。
しかし・・・結果は
のように外部例外 E0434F4Dを出力してちゃんと動きませんでしたorz
この例外はtry...catchで掴もうとしても掴めません。どうも処理の関数(ここではsample01)に入った瞬間にエラーを返してしまうようです。ちなみにこのコードでググっても原因は理解できませんでした。
ということで、ここでストップしてしまいました><。ガックシ。
解決策が見つかったら続きます。