using dllimport

1.1k Views Asked by At

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?

2

There are 2 best solutions below

0
On

Without knowning anything about the specific function or library: I believe specifying the entrypoint as entrypoint="startenroll" or entrypoint="#4" instead of the dumpbin output might help.

2
On

_grstartenroll@4 is the decorated function name in the dll.

That looks like standard calling convention naming, you could try:

[DllImport("grfinger.dll",EntryPoint="_grstartenroll@4", CallingConvention=CallingConvention.StdCall]
public static extern int startenroll(int context);

Otherwise I would try and get the undecorated function name, you can pipe the output of dumpbin to undname like this:

dumpbin /exports grfinger.dll | undname _grstartenroll@4

and then use the undecorated function name in your dll import.