2012-01-18 13 views
1

私はC++ DLLを持っています。私はC#コードでこのDLLを使用する必要があります。このDLLで:構造体でC++関数を呼び出すC#

struct UserRecord 
{ 
    int    login; 
    //some properties here 
} 
struct CServerInterface 
{ 
    int   __stdcall ClientsAddUser(UserRecord *inf); 
    //some other functions here 
} 

構造体の関数をどのように呼び出すことができますか?私はこれを試してみてください。

[DllImport("WebRegistration.dll")] 
public extern static int ClientsAddUser(ref UserRecord inf); 

public struct UserRecord 
{ 
//properties here 
} 

static void Main(string[] args) 
{ 
    UserRecord user = new UserRecord(); 
    ClientsAddUser(ref user); 
} 

は例外をスロー:「DLLの 『ClientsAddUser』という名前のエントリポイントを見つけることができませんでした」。

私は、この関数は構造体ではなかった場合、私は例外をスローしないこととします。

+0

うん、それは仕事に行くことはありません。それがC++であるので、(もし問題があれば)変更された名前を調べる必要があります。あなたはCOMオブジェクトとして 'CServerInterface'をエクスポートする方がより運が良いかもしれません。 – leppie

答えて

0

私は初心者ですが、これを試してみてください。 CServerInterfaceとUserRecordを "public class"にします。例;

public class CServerInterface() {int __stdcall ClientsAddUser(UserRecord *inf);}