2010-12-01 10 views
0

私は、外部DLLから方法をiportingし、次のコードを持っています:私はCreateGuiが見つからないというエラーを取得しC#のDLLIMPORT質問

tabControl1.TabPages.Add(CreateGUI()); 

[DllImport("test.dll", CharSet = CharSet.Unicode, SetLastError = true)] 
    public static extern TabPage CreateGUI(); 

とこれを呼び出すためにDLL内で。 CreateGuiメソッドは、DLL内でpublicおよびstatic宣言されていますか?誰も何のアイデア?

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

+0

は、test.dll .net DLLまたはいくつかのレガシーDLLですか? – TalentTuner

+0

public? .NETアセンブリを「インポート」しようとしていますか? Interop/COMアセンブリでのみ使用するDllImportはありませんか? – willvv

+0

さて、元気です。それはネットです。これは管理されていないコード/ comなどのためのものではないとわかりませんでした。 –

答えて

2

このメソッドがTabPageを返す場合、それは.NETメソッドなので、.NETアセンブリです。次に、DllImportでインポートするのではなく、dllをプロジェクトの参照として追加する必要があります。

編集:
あなたは.NETアセンブリをロードしたい場合は、動的にあなたがAssembly.LoadFileでそれをロードしAssembly.GetTypesであなたのタイプを見つける必要があります。

+0

dllを動的にロードする必要があるため、リファレンスとして追加できません。これは、クライアントに同梱されている場合にのみロードされます。 –

+0

@Darren Young、.NETアセンブリの動的読み込みで私の答えを更新しました –