我在 VS2005 .NET Framework 2.0 中创建的 WinForms 项目存在问题,我刚刚升级到 VS2012 .NET Framework 4.5。在我的项目中,我使用了第三方 DLLDllImport
并使用了它的功能,因为我拥有它们的所有文档。
问题是导入的 DLL 中在 VS2005 .NET Framework 2.0 中运行良好的函数之一在 VS2012 .NET 4.5 中不起作用。
以下是我的项目中的代码片段:
[DllImport("W5EditLD.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "K5GetClassName")]
public static extern string GetClassName();//Dll import definition
public string _GetClassName()
{
return GetClassName();//wrapper function to DLL import function
}
string sClassName = _GetClassName();//where i call API via wrapper method,**
上面的代码片段在 VS2005 .NET Framework 2.0 中运行良好但是当我将我的项目升级到 VS2012 .NET Framework 4.5 时,我必须按照以下方式进行:
[DllImport("W5EditLD.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "K5GetClassName")]
public static extern IntPtr GetClassName();//Dll import definition
public IntPtr _GetClassName()
{
return GetClassName();//wrapper function to DLL import function
}
IntPtr ptr = _GetClassName();//where i call API via wrapper method,
string sClassName = System.Runtime.InteropServices.Marshal. PtrToStringAnsi(ptr);
这是为什么?VS2012 .NET Framework 4.5 不支持自动字符串编组吗?