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

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

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

使用するDLLを切り替えたい

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

■85489 / inTopicNo.1)  使用するDLLを切り替えたい
  
□投稿者/ こわれもの (1回)-(2017/10/30(Mon) 10:37:39)

分類:[VB.NET/VB2005 以降] 

環境:VB2015
OS:Windows7

ある機能をもったDLLが32ビット、64ビット2つ用意されています。
謎32.DLL(32ビット用DLL)、謎64.DLL(64ビット用DLL)
どちらも同じ機能で、呼び出し関数も同じもの、引数も同じです。
これを動作環境によって切り替えたいのですが、可能でしょうか?

例というか、コードイメージ
<DllImport("謎32.DLL", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.Cdecl)> _
    Function 関数A(ByVal cmd As Integer) As Integer
    End Function
<DllImport("謎64.DLL", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.Cdecl)> _
    Function 関数A(ByVal cmd As Integer) As Integer
    End Function

If IntPtr.Size = 4 Then     '32ビットで動作
    ret = 関数A(1)          '謎32.DLLでの関数A
ElseIf IntPtr.Size = 8 Then
    ret = 関数A(1)          '謎64.DLLでの関数A
End If

こんな風にしたいです。

引用返信 編集キー/
■85491 / inTopicNo.2)  Re[1]: 使用するDLLを切り替えたい
□投稿者/ なちゃ (228回)-(2017/10/30(Mon) 11:46:56)
ここの最後に載ってる方法とか。
※(5) SetDllDirectory()を呼び出す

http://cflat-inc.hatenablog.com/entry/20130723/1374535605
引用返信 編集キー/
■85492 / inTopicNo.3)  Re[2]: 使用するDLLを切り替えたい
□投稿者/ なちゃ (229回)-(2017/10/30(Mon) 11:48:40)
No85491 (なちゃ さん) に返信
> ここの最後に載ってる方法とか。
> ※(5) SetDllDirectory()を呼び出す
>
> http://cflat-inc.hatenablog.com/entry/20130723/1374535605

ごめんなさい最後じゃなかったです。
他にもいろいろ案が出てますね。
引用返信 編集キー/
■85493 / inTopicNo.4)  Re[3]: 使用するDLLを切り替えたい
□投稿者/ こわれもの (2回)-(2017/10/30(Mon) 11:54:36)
2017/10/31(Tue) 10:18:00 編集(投稿者)
No85492 (なちゃ さん) に返信
なるほど、
      if ( IntPtr.Size == 8 ) {
        // 64bitっぽい
        SetDllDirectory( string.IsNullOrEmpty( "謎64.DLL" ) ? "." : "謎64.DLL" );
      }
      if ( IntPtr.Size == 4 ) {
        // 32bitっぽい
        SetDllDirectory( string.IsNullOrEmpty( "謎32.DLL" ) ? "." : "謎32.DLL" );
      }
      ret = 関数A(1)

こんな感じですね。
ありがとうございます。m(_ _)m

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ