2009-04-25 6 views

답변

8

함수 매개 변수에는 이름 (이름 *은 이름이 아님)이 없습니다. 당신은 당신의 예제에서 안전하지 않은 코드를 사용할 필요가 없습니다

[DllImport("C++Dll.dll")] 
     public unsafe static extern long func(name* theName); //error : Identifier expected 
3

변경을. 클래스는 관리되지 않는 코드를 참조하여 항상 마샬링됩니다. 이것을보십시오 :

namespace defintions 
{  
    public class name  
    {  
     [MarshalAs(UnmanagedType.LPStr)] 
     string firstname; 
     [MarshalAs(UnmanagedType.LPStr)] 
     string lastname;  
    } 


    class Functions  
    {  
     [DllImport("C++Dll.dll")]  
     public static extern long func(name theName); 
    } 
} 
+0

아주 좋은 지적. 보안 목표 명세서 작성자가 안전하지 않은 코드로 작업하게하는 것이 항상 좋습니다! –

관련 문제