| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Eksempel på hvordan man kalder en C-funkti~ Fra : Henrik | 
  Dato :  17-09-10 15:17 |  
  |   
            Hej,
 
 Er der nogen der kan give mig et eksempel på hvordan man kalder en 
 C-funktion fra et C#.Net projekt?
 
 Jeg har eksempelvis to filer:
 
 minckode.c
 minckode.h
 
 Jeg opretter en solution i Visual Studio med to projekter.
 
 Det ene projekt er et C projekt som indeholder de to ovenstående filer. I 
 filen minckode.c er funktionen addtwo defineret:
 
 int addtwo(int x, int y)
 {
     return (x + y)
 }
 
 Det andet projekt er et C#.Net projekt som skal kalde funktionen addtwo(int 
 x, int y)
 
 
 Hvordan gør man det?
 
 Jeg har googlet i timevis for at finde et eksempel, men har ikke kunnet 
 finde noget brugbart.
 
 Jeg er også i tvivl om hvordan project settings skal se ud for de to 
 projekter (skal man bare bruge default indstillingerne?).
 
 
  
            
             |   |   
            
        
 
            
         
           Andreas Andersen (24-10-2010) 
         
	
            | Kommentar Fra : Andreas Andersen | 
  Dato :  24-10-10 00:38 |  
  |   
            On 17 Sep., 16:17, "Henrik" <hen...@nospam.tak> wrote:
 > Hej,
 >
 > Er der nogen der kan give mig et eksempel på hvordan man kalder en
 > C-funktion fra et C#.Net projekt?
 >
 > Jeg har eksempelvis to filer:
 >
 > minckode.c
 > minckode.h
 >
 > Jeg opretter en solution i Visual Studio med to projekter.
 >
 > Det ene projekt er et C projekt som indeholder de to ovenstående filer. I
 > filen minckode.c er funktionen addtwo defineret:
 >
 > int addtwo(int x, int y)
 > {
 >     return (x + y)
 >
 > }
 >
 > Det andet projekt er et C#.Net projekt som skal kalde funktionen addtwo(int
 > x, int y)
 >
 > Hvordan gør man det?
 
 Du skal eksportere funktionen fra dit C-projekt, og bruge P/Invoke i
 dit C#-projekt. Følgende virker på min maskine:
 
 extern "C" __declspec(dllexport) int __stdcall addtwo(int x, int y) {
    return x + y;
 }
 ---
 [DllImport("MyDll.dll", CharSet=CharSet.Auto)]
 static extern int addtwo(int x, int y);
 
 
 --
 Andreas
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |