खोने वाले हस्ताक्षर किए गए चार एक सॉफ्टवेयर के एसडीके के लिए एक डीएलएल फ़ाइल की ओर काम कर रहा है और मैं सॉफ्टवेयर के मेजबान के बारे में जानकारी प्राप्त करने के लिए एक समारोह को कॉल करने की कोशिश कर रहा हूं।पी/Invoke, सी #: एक बाइट
फ़ंक्शन चाहता है कि संरचना में दो हस्ताक्षरित चार चर (HostMachineAddress, HostProgramVersion) हैं और ऐसा लगता है कि जब मैं इसे C# से कॉल करने का प्रयास करता हूं तो मैं अंतिम बाइट को "ढीला" करता हूं ... अगर मैं आकार में बदलता हूं सी # स्ट्रक्चर से 5 तक मुझे लापता बाइट मिलता है, हालांकि यह अन्य परिवर्तनीय डेटा खो देता है।
क्या कोई मुझे इस समस्या को हल करने का कोई तरीका ढूंढने में मदद कर सकता है? भी struct के बजाय एक वर्ग का उपयोग करने की कोशिश कर system.stackoverflow त्रुटि होती है
सी # Struct
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct sHostInfo
{
public int bFoundHost;
public int LatestConfirmationTime;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string szHostMachineName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string HostMachineAddress;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string szHostProgramName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string HostProgramVersion;
}
सी #
[DllImport("Cortex_SDK.dll")]
public static extern int GetHostInfo(out sHostInfo pHostInfo);
HostProgramVersion और szHostProgramName आपके सी # कोड में क्यों बदल दिए गए हैं? – Fox32