我想在我的C#.net应用程序中使用本机Dll,如下所示:
public const int WFSDDESCRIPTION_LEN = 256;
public const int WFSDSYSSTATUS_LEN = 256;
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Auto)]
public struct LPWFSVERSION
{
[MarshalAs(UnmanagedType.U4, SizeConst = 4)]
int WVersion;
[MarshalAs(UnmanagedType.U4, SizeConst = 4)]
int WLowVersion;
[MarshalAs(UnmanagedType.U4, SizeConst = 4)]
uint WHighVerion;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = WFSDDESCRIPTION_LEN + 1)]
public string szDescription;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = WFSDSYSSTATUS_LEN + 1)]
public string szSystemStatus;
}
[DllImport("MSXFS.DLL", EntryPoint = "WFSStartUP", CharSet = CharSet.Auto, ExactSpelling = false)]
public static extern int WFSStartUP([MarshalAs(UnmanagedType.U4)]int dwVersionsRequired, ref LPWFSVERSION ver);
Run Code Online (Sandbox Code Playgroud)
这里是我使用导入函数的代码:
LPWFSVERSION Ver = new LPWFSVERSION();
WFSStartUP(0x31, ref Ver);
Run Code Online (Sandbox Code Playgroud)
问题是它抛出了一个异常,上面写着:"无法找到入口点"
我用dumpbin转储了msxfs.dll,结果如下:
Section contains the following exports for MSXFS.d
00000000 characteristics
46938FBD time date stamp Tue Jul 10 17:25:09 200
0.00 version
1 ordinal base
37 number of functions
37 number of names
ordinal hint RVA name
1 0 00009310 WFMAllocateBuffer
2 1 000093D0 WFMAllocateMore
.
.
32 1F 00005BD0 WFSOpen
33 20 00007C80 WFSRegister
34 21 00008CD0 WFSSetBlockingHook
35 22 00004FA0 WFSStartUp
Run Code Online (Sandbox Code Playgroud)
似乎dll方面没有问题,因为dumpbin也可以找到入口点.我不知道是什么问题?:(