몇 가지 온라인 예제를 따라 C#으로 DLL 함수를 가져 왔습니다. 함수는 C# 클래스의 일부로 선언되어야합니다. 그러나 다른 C# 클래스에서 이러한 함수를 사용하려면 어떻게 선언을 공유 할 수 있습니까?어떻게 파일간에 C# DllImport 함수를 공유 할 수 있습니까?
가장 좋은 해결책은 C++ DLL 함수를 일반 클래스로 가져와 내 응용 프로그램 전체에서이 방법을 사용하는 것입니다.
미리 감사드립니다.
편집 : 아래 제안을 시도했지만 지금은 구조체를 사용하려고하는 "ImportSomeStuff의 보호 수준으로 인해 액세스 할 수 없습니다."라는 오류가 나타납니다. 모든 것이 공개 된 것처럼 보이므로 무엇을 시도 할 수 있습니까?
class ImportSomeStuff
{
[StructLayout(LayoutKind.Sequential)]
public struct MyStruct
{
public uint nData;
}
public delegate void MyCallback(ref MyStruct myStruct);
[DllImport("My.dll", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool AddCallback(MyCallback callback);
[DllImport("My.dll", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool RemoveCallback(MyCallback callback);
}
(다른 파일)
class DoSomeStuff
{
public List<ImportSomeStuff.MyStruct> listStuff = new List<ImportSomeStuff.MyStruct>();
}
감사합니다. 내 함수는 또한 C#에서 선언 한 구조체를 사용하지만 이제는 "[클래스]가 사용하는 보호 수준으로 인해 액세스 할 수 없다"라는 오류가 발생합니다. 어떤 제안? – parsley72
@parsley 그런 다음 구조체를 공개합니다. – CodesInChaos
위의 코드 예제를 참조하십시오. – parsley72