C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

C#とCOM


(過去ログ 3 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■3372 / inTopicNo.1)  C#とCOM
  
□投稿者/ ヨン 二等兵(2回)-(2006/04/30(Sun) 15:47:10)

分類:[C#] 


分類:[C#] 

VS2003のC#とC++を使って下記のコードを実行すると
一般保護違反が出てしまって正常に実行することができません。
どのように解決したらいいのでしょうか?
(C#の方はCOMで、C++はクライアントです。)

[C#]
public int Test( object name)
{
byte [] byArray = (byte[])name; // ここでエラー
Console.WriteLine("Test, {0}!", byArray);
return 0;
}

[C++]
int main(int argc, char* argv[])
{
char sz[300];
ZeroMemory( sz, 300 );
sz[0] = 0x41;
sz[1] = 0x42;
sz[2] = 0x43;
sz[3] = 0x00;
cpi->Test(sz); // cpiはインターフェイス
}
以上よろしくお願いします。

0
引用返信 編集キー/
■3373 / inTopicNo.2)  Re[1]: C#とCOM
□投稿者/ 中博俊 神(390回)-(2006/04/30(Sun) 17:39:19)
中博俊 さんの Web サイト

分類:[C#] 

エラーって何?
それ以前にbyte[]で受ければすむだけでショー


0
引用返信 編集キー/
■3375 / inTopicNo.3)  Re[2]: C#とCOM
□投稿者/ Hongliang 一等兵(20回)-(2006/04/30(Sun) 18:42:25)
Hongliang さんの Web サイト

分類:[C#] 

ただの byte[] だと SAFEARRAY として公開されると思います。
MarshalAs(UnamangedType.LPArray) 属性が必要かと。

ところで VS には詳しくないですが、tlbexp.exe は使っていないのでしょうか?
タイプライブラリを使えばどの型が要求されるのか簡単に分かると思いますが。

0
引用返信 編集キー/
■3377 / inTopicNo.4)  Re[3]: C#とCOM
□投稿者/ ヨン 二等兵(3回)-(2006/04/30(Sun) 21:13:44)

分類:[C#] 

タイプライブラリを参照してみると
long Test( [in] VARIANT name );
となってます。

C#側でどう対応したらよいのでしょう?

0
引用返信 編集キー/
■3378 / inTopicNo.5)  Re[4]: C#とCOM
□投稿者/ 中博俊 神(392回)-(2006/04/30(Sun) 21:40:56)
中博俊 さんの Web サイト

分類:[C#] 

objectだからVARIANTになっているんでしょうねぇ。

0
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -