C#, C♯, C#相談室 Part51at TECH
C#, C♯, C#相談室 Part51 - 暇つぶし2ch981:デフォルトの名無しさん
09/03/31 13:22:24
DllImportでぐぐればいいんじゃね

982:デフォルトの名無しさん
09/03/31 13:23:49
>>980
ごめん、VB6のDLLかと思ってた
VB6はDLLはCOMになるから

そういうことならReflection使ってみては?
色々他にもあると思うけど

983:デフォルトの名無しさん
09/03/31 13:25:08
動的に呼び出しさせて何をさせようというんだ俺は・・・
疲れてんだな

984:デフォルトの名無しさん
09/03/31 17:19:48
>>977
2次元配列のマーシャリングってできたっけ?>識者

985:デフォルトの名無しさん
09/03/31 17:35:29
2次元配列はやったことないけど出来るはずだと思う

986:デフォルトの名無しさん
09/03/31 17:43:20
うお、今調べたら出来ないようだった、もうしわけない。
対策はいろいろあるそうだが、ストレートには出来ないそうだ。

987:デフォルトの名無しさん
09/03/31 18:18:17
とりあえずVB6の知識をひけらかすか

Public Type Struct1 
  Member1 As String 'BSTR
  Member2 As Byte '1バイト
  Member3 As Byte '1バイト
  Member4(20) As String 'UTF16な文字が20文字
  Member5(20, 1340) As Byte 'Option Base 0なら21×1341バイト
End Type

何の役にたつかはしらん

988:デフォルトの名無しさん
09/03/31 18:44:38
>>987
>UTF16な文字が20文字 はこれじゃね?
Member4 As String * 20 

Member4(20) As String はStringの配列21 (Option base によるけど)

989:デフォルトの名無しさん
09/03/31 18:52:13
立てれなかったから誰か任せた

C#, C♯, C#相談室 Part52
------------
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part51
スレリンク(tech板)

Visual C# 2008 Express Edition 日本語版
URLリンク(www.microsoft.com)

その他テンプレ>>2-5くらい

990:デフォルトの名無しさん
09/03/31 18:53:17
「ふらっと」と「VS2008」スレが新スレになってるので更新。
>>3>>5はそのままでおkかな?
-----
関連スレ

ふらっとC#,C♯,C#(初心者用) Part39
スレリンク(tech板)

Visual Studio 2008 Part 15
スレリンク(tech板)

WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
スレリンク(tech板)

【VB.NET】LINQ友の会【C#, C♯, C#】
スレリンク(tech板)

C#,C#の宿題片付けます。
スレリンク(tech板)

991:デフォルトの名無しさん
09/03/31 18:53:59
>>987,988
参考になります。
Option Base は無指定ですので、0ですかね。

UnmanagedType.BStr をヒントにもう少しトライしてみたいと思います。

992:デフォルトの名無しさん
09/03/31 19:15:52
VB、C#混合になってしまうが
VB6で>>877の標準モジュールを含むプロジェクトを作って
VB.NETのアップグレードウイザードにかける。

やってみたがTODOが残るな・・・これもで手を入れないといけないようだ。


993:デフォルトの名無しさん
09/03/31 19:18:16
VB6もC#も中途半端な知識しか持っていないけどこんな感じではないのか、と質問していい?
unsafe struct Struct1
{
[MarshalAs(UnmanagedType.LPStr)]
string Member1;
byte Member2;
byte Member3;
[MarshalAs(SizeConst = 21)]
string Member4[];
fixed byte Member5[21 * 1340];
};

[DllImport("Library1.dll")]
static extern int ExpFunc1(ref Struct1 a_Struct1, int a_iNumber1, int a_iNumber2);

unsafeが嫌なら
[MarshalAs(UnmanagedType.U1, SizeConst = 21 * 1341)]
byte Member5[,];
としてMember5 = new byte[21, 1341];

994:デフォルトの名無しさん
09/03/31 22:01:27
>>988
そうだった
すっかり知識が抜け落ちてて愕然

995:977
09/04/01 09:48:39
UnmanagedType.LPStrとか
UnmanagedType.BStrとか
UnmanagedType.ByValArrayとか
いろいろ試しましたが、どうにもうまく行かないので、
もう諦めてVB6でラップDLL作ってそれをC#で参照して
使うことにしました。
VB6のデバッガでもう少し粘るといいのかもしれませんが
これで妥協しました。

いろいろありがとうございました。

996:デフォルトの名無しさん
09/04/01 09:55:35
MSDN見たか?まあ解決したならいいか

997:デフォルトの名無しさん
09/04/01 10:17:26
C#, C♯, C#相談室 Part52
スレリンク(tech板)

998:デフォルトの名無しさん
09/04/01 10:58:25
>>996
MSDNは 見まくり ですね。。

解決というか 逃げ ですけど、とりあえず
やれることはやれるようになったので。

VB6側の状況がよくわからずに
やみくもにやってもダメですね。
暇ができたら、ダミーの Library1.dll を作って
VB6から呼んでみて、中がどうなってるのか
確認してから再挑戦してみたいと思います。

999:デフォルトの名無しさん
09/04/01 12:33:10
MSDNよりPInvoke

1000:デフォルトの名無しさん
09/04/01 13:14:28
1000いただきまーす♪

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch