4
이 내가 주소 구조를 전달하여이 API를 호출 할 C#을에서 C 내 구조와 기능 ++ DLLC에 C#을 구조의 포인터를 전달 ++ API
struct Address
{
TCHAR* szAddress;
};
extern "C" DllExport void SetAddress(Address* addr);
입니다. 그래서, 나는 내가 C++ 코드에서 Address.szAddress에 대한 NULL 무엇입니까 C#
Address addr = new Address();
addr.addressName = "Some Address";
IntPtr pAddr = Marshal.AllocHGlobal(Marshal.SizeOf(addr));
Marshal.StructureToPtr(addr , pAddr , false);
SetAddress(pAddr); //CALLING HERE
에서 C++ API를 호출하고 어떻게이 지금
[StructLayout(LayoutKind.Sequential)]
public struct Address
{
[MarshalAs(UnmanagedType.LPTStr)]
public String addressName;
}
[DllImport("Sample.dll")]
extern static void SetAddress(IntPtr addr);
C#
을에서 다음했다. 어떤 생각이 잘못된 것입니까?
[DllImport] 선언에 CallingConvention.Cdecl이 없습니다. –
이것을 사용하고 CallingConvention = CallingConvention.Winapi를 시도하십시오. –