使用dll导入
我尝试在以下代码中使用 DllImport 属性:
[DllImport("grfinger.dll",EntryPoint="_grstartenroll@4")]
public static extern int startenroll(int context);
获取我使用 dumpbin /export 的函数名称。当我运行代码时,出现以下异常:
无法在 DLL“grfinger.dll”中找到入口点名称“_grstartenroll@4”
。
我该如何解决这个错误?
I'm trying to use the DllImport
attribute in the following code:
[DllImport("grfinger.dll",EntryPoint="_grstartenroll@4")]
public static extern int startenroll(int context);
to get the function name I used dumpbin /export. When I run the code I get the following exception:
Unable to find an entry point name '_grstartenroll@4' in DLL 'grfinger.dll'
.
How can I resolve this error?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
_grstartenroll@4 是 dll 中的修饰函数名称。
这看起来像标准调用约定命名,您可以尝试:
否则我会尝试获取未修饰的函数名称,您可以将 dumpbin 的输出通过管道传递给 undname,如下所示:
,然后在 dll 导入中使用未修饰的函数名称。
_grstartenroll@4 is the decorated function name in the dll.
That looks like standard calling convention naming, you could try:
Otherwise I would try and get the undecorated function name, you can pipe the output of dumpbin to undname like this:
and then use the undecorated function name in your dll import.
在不了解有关特定函数或库的任何信息的情况下:我相信将入口点指定为
entrypoint="startenroll"
或entrypoint="#4"
而不是 dumpbin 输出可能会有所帮助。Without knowning anything about the specific function or library: I believe specifying the entrypoint as
entrypoint="startenroll"
orentrypoint="#4"
instead of the dumpbin output might help.