|
■No68916 (unagi さん) に返信
質問内容を整理してください。
VB から、VC++2008 で作成された DLL を呼び出す。 VC++2008 での宣言は、次の通り。 int dllfunc(int intDataNum, char * strInputDts[], char * OutputDts[])
…ここまでは分かりました。次の部分は、なんでしょう?
> int dllfunc_new(int intDataNum, array<string^>^ strNewInputDts, array<string^>^ OutputDts) > { > // DLL関数入力文字列配列 --> DLL関数引数 > > // 旧DLL関数の呼び出し > dllfunc(intDataNum, strInputDts, OutputDts) > > // DLL関数出力文字列配列 --> 呼び出し関数引数 > }
これは、「やってみようとしていること」でしょうか。それとも、「やってみたこと」でしょうか。 そのあたりが分かりません。なぜ「.NET 対応の C++/CLI」が出てくるのでしょう? 色々調べたのはわかります。それを、
> やり方は色々あると思うのですが、C++のマネージ拡張機能を使用すればできるというのを聞いた
で、済ませないでください。 これでは、どんな情報を得て、それをどのように考えて、 「C++ マネージ拡張機能を使おう」という結論にいたったのかわかりません。 もちろん、「私が聞いていることにだけ答えてくれれば良いのだ」とおっしゃる方は、大勢います。 ただ、余計な苦労をしているようです。 苦労したい、というのを止めはしませんが、それで良いですか?
なお、「string」は文字列です。 array<string> とすると、「文字列配列」になります。 そして、.NET Framework では、UNICODE です。 「char*」は、文字へのポインターです。 そして、ANSI コードです。 変換できません。
VB は分からないけど、C# なら、こうかな。
[DllImport("dll の名前", CharSet = CharSet.Ansi, SetLastError = true)] static extern int dllfunc(int intDataNum, string strInputDts, StringBuilder OutputDts);
で、VC++2008 のプロジェクトが、C++/CLI で作られているなら、 なんの苦労もなく、DLL を参照するだけでいいはず。
|