在浏览Swig生成的包装器时,我发现 PInvokes 没有定义任何入口点,但有些地方确实有入口点。那么它们之间有什么区别呢?什么时候需要定义一个入口点,什么时候不需要?
没有定义EntryPoint
:
[DllImport("Kernel32.dll", CharSet = CharSet.Unicode)]
public static extern bool ReadFile(
HandleRef hndRef,
StringBuilder buffer,
int numberOfBytesToRead,
out int numberOfBytesRead,
int flag);
定义为Entrypoint
:
[DllImport("Kernel32.dll", CharSet = CharSet.Unicode, EntryPoint = "ReadFile")]
public static extern bool ReadFile2(
HandleRef hndRef,
StringBuilder buffer,
int numberOfBytesToRead,
out int numberOfBytesRead,
Overlapped2 flag);
另外为什么函数必须static
像 in 一样public static extern
?我假设这extern
告诉编译器这个方法是在外部定义的?