2012-02-23 20 views
0

コンソールアプリケーションを使用して、関数を呼び出すためにC++ com dllを使用しています。C++ DLLからの戻り値がC#を使用していません

登録済みのDLLをプロジェクトの参照として追加してから、オブジェクトをインスタンス化して関数を呼び出しています。 (私はいくつかの他の人々がそうであるようにピンボケを使用していないことに注意する必要があります)

私は結果として文字列を取得する必要がありますが、私は空の文字列を取得しています。私が出力の任意の形式を得ることができる唯一の方法は、アンマネージコードのデバッグを有効にして、それが正しく実行され、結果を返すことがわかります。

私はstackoverflowと他のいくつかのサイトを検索しており、これに一致するものは全く見つかりません。どのようなアイデアを私は間違ってやっているか、どのように値を返すためにそれを得ることができますか?

EDIT:要求されたように、ここでコードがある -

COMMODCHECKLib.Modcheck mod = new COMMODCHECKLib.Modcheck(); 
string output = mod.check("123456"); 
+1

あなたのコードを入れてください – gideon

+1

期待される戻り値の型は、std :: stringまたはnullで終了する文字配列へのポインタですか? – DuncanACoulter

+0

@DuncanACoulter戻り値の型は文字列でなければなりません – m4rc

答えて

0

まあDLLのドキュメントが間違っていたと私は必要に応じ一つとしてチェック機能を与えたが、私は使用するために必要なものですcheckAllocateと呼ばれる機能がInfactはあったようです。あなたの時間と労力のために多くのお礼を申し上げます。

1

問題は、C#のコードまたはCOMライブラリ内にある場合、私は、最初のチェックをお勧めします。そのためには、たとえば

(test.vbs) 
Set mod = CreateObject("COMMODCHECKLib.ModCheck") 
WScript.echo(mod.check("123456")) 

のようなVBスクリプトファイル(.VBS)がジャスト(test.vbsを入力)コマンドラインからこのスクリプトを実行します。

このようにすれば、少なくとも問題はC#側にあることがわかります。

関連する問題