2012-01-18 244 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++,所以你需要找出錯位的名字(如果這是個問題)。你可能有更多的運氣將'CServerInterface'作爲COM對象導出。 – leppie 2012-01-18 09:22:19

回答

0

我是新手,但試試這個; 製作CServerInterface和UserRecord「public class」。一個例子;

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