p/invokeに関する管理対象コードから非管理コードへの問題があります。私のオリジナルのpost at the MSDN forumを見てください。私が続ける前に、私はちょうどいくつか説明したいと思います:ネット3.5にラッパーアセンブリがあり、アンマネージドコードへの実際の相互運用を行います。それから私はラッパーアセンブリを使用する私のコンソール "ホストapp"を持っています。pInvoke、.net 4 vs 3.5
ホストアプリケーションが.net 4を使用しているときに私が思い描いた解決策(私は私のMSDNポストを参照しています)は動作しますが、.net 3.5を使用するようにホストアプリケーションを変更すると動作しません。変更すると、私はAccessViolationExceptionを取得します。
- ホストアプリ:4.0、ラッパーアセンブリ:3.5 - >
- ホストアプリ作品:3.5、ラッパーアセンブリ:3.5 - >が AccessViolationException
をスロー誰が、なぜ私に手掛かりを持っていますがAccessViolationExceptionを取得しますか?最も重要なのは、どうすれば.net 3.5で動作させることができるのでしょうか?
私が言及したMSDN記事の簡単な要約。私はこの乱雑なp/Invokeを解決する必要があります。 PTBは、各引数は任意の長さの配列に構造体のポインタであることを意味する
long TBAPI TbeAndring (short,
short,
PTB_PU,
PTB_ANDRING_INFO,
PTB_PARAMS,
PTB_PREMIE_NIVA_INFO,
PTB_PREMIE,
PTB_FORMAN_INFO,
PTB_FORMAN,
PTB_FUNK,
PTB_PARAMS,
PTB_PREMIE_NIVA_INFO,
PTB_PREMIE,
PTB_FORMAN_INFO,
PTB_FORMAN,
PTB_FUNK);
:Cの宣言は次のようになります。構造体には、ほとんどが文字列、倍精度、charおよびshortが含まれます。あなたは、引数の一部も同様に、アンマネージコードによって変更されて見たよう
<DllImport(NativeLibraryName, CallingConvention:=CallingConvention.StdCall, CharSet:=CharSet.Ansi, SetLastError:=True)>
Public Shared Function TbeAndring(ByVal sAntMoment As Short, _
ByVal sAntPU As Short, _
<[In]()> ByVal atbpu As PTB_PU(), _
<[In]()> ByVal atbandringinfo() As PTB_ANDRING_INFO, _
<[In]()> ByVal atbparamsEfter() As PTB_PARAMS, _
<[In]()> ByVal aNivaInfoEfter() As PTB_PREMIE_NIVA_INFO, _
<[In](), Out()> ByVal atbpremieEfter() As PTB_PREMIE, _
<[In]()> ByVal atbFormanInfoEfter() As PTB_FORMAN_INFO, _
<[In](), Out()> ByVal atbFormanEfter() As PTB_FORMAN, _
<[In](), Out()> ByVal atbfunkEfter() As PTB_FUNK, _
<[In]()> ByVal atbparamsFore() As PTB_PARAMS, _
<[In]()> ByVal aNivaInfoFore() As PTB_PREMIE_NIVA_INFO, _
<[In](), Out()> ByVal atbpremieFore() As PTB_PREMIE, _
<[In]()> ByVal atbFormanInfoFore() As PTB_FORMAN_INFO, _
<[In](), Out()> ByVal atbFormanFore() As PTB_FORMAN, _
<[In](), Out()> ByVal atbfunkFore() As PTB_FUNK) As Int32
End Function
:とにかく、私はこのDLLIMPORT文で終わりました。
ここで質問を編集して、MSDNポストの要点を含めてください。 SOに関する質問は、別の場所で投稿を読む必要はなく、自分で立つべきです。 –
また、私たちはここにこだわり、 "Hi"と "Thanks"を省略しています。 –
MSDN投稿のbirefサマリを追加しました。 – Kimmen