From: Tom Shelton on
Dave Wurtz formulated the question :
> On Jun 7, 5:16�pm, "Herfried K. Wagner [MVP]" <hirf-spam-me-
> h...(a)gmx.at> wrote:
>> Am 08.06.2010 00:05, schrieb Dave Wurtz:
>>
>>> In my VB.NET application, I'm trying to call a function from a 32-bit,
>>> non-.NET dll file and I'm having problems. �I believe I have the
>>> correct signature for the dll with:
>>
>>> <System.Runtime.InteropServices.DllImportAttribute("asdHTMLCompare.dll")>
>>> �>[...] When I run this, I get the error:
>>> An exception of type 'System.EntryPointNotFoundException' occurred in
>>> ProductVision.Windows.Forms.dll but was not handled in user code.
>>> Additional information: Unable to find an entry point named
>>> 'BuildCompositeFile' in DLL 'asdHTMLCompare.dll'.
>>
>> Maybe the function has a different name. �You may want to use Dependency
>> Walker (<URL:http://www.dependencywalker.com/>) to examine the function
>> the DLL exports.
>>
>> --
>> � M S � Herfried K. Wagner
>> M V P �<URL:http://dotnet.mvps.org/>
>> � V B � <URL:http://dotnet.mvps.org/dotnet/faqs/>
>
> Thanks for the reply.
>
> As suggested, I downloaded the Dependency Walker program and opened
> the DLL. In looking at the function I want to call and selecting
> "Undecorate C++ Functions", this is what it shows:
>
> int BuildCompositeFile(char *,char *,char *,char *,char *,char *,int)
>
> Do I have the correct signature defined?
>
> Thanks.
> Dave

If the dll is exposing a decorated name, then you must alias the vb
declare to the decorated name....

--
Tom Shelton


From: Dave Wurtz on
On Jun 17, 11:25 pm, Armin Zingler <az.nos...(a)freenet.de> wrote:
> Am 17.06.2010 22:57, schriebDaveWurtz:
>
>
>
>
>
> > <System.Runtime.InteropServices.DllImportAttribute("asdHTMLCompare.dll")>
> > _
> >     Public Shared Function BuildCompositeFile(ByVal szOldFile As
> > String, _
>
> > ByVal szNewFile As String, _
>
> > ByVal szCompositeFile As String, _
>
> > ByVal szOldPrefix As String, _
>
> > ByVal szNewPrefix As String, _
>
> > ByVal szCompositePrefix As String, _
>
> > ByVal bCheckForChangedImages As Integer) As Integer
> >     End Function
>
> > I must be doing something wrong because when I call the function, I
> > get the error:
>
> > An exception of type 'System.EntryPointNotFoundException' occurred in
> > ProductVision.Windows.Forms.dll but was not handled in user code.
> > Additional information: Unable to find an entry point named
> > 'BuildCompositeFile' in DLL 'asdHTMLCompare.dll'.
>
> Try it with
>   Declare Function...
> with same name and same types.
>
> Also try
>   Declare Ansi Function...
>
> --
> Armin- Hide quoted text -
>
> - Show quoted text -

Thanks for the suggestion. Unfortunately, I get the same error
message. This is how I typed it:

Public Declare Function BuildCompositeFile Lib
"asdHTMLCompare.dll" (ByVal szOldFile As System.String, _
ByVal szNewFile As System.String, _
ByVal szCompositeFile As System.String, _
ByVal szOldPrefix As System.String, _
ByVal szNewPrefix As System.String, _
ByVal szCompositePrefix As System.String, _
ByVal bCheckForChangedImages As Integer) As Integer

I also tried Public Declare Ansi/Auto/Unicode Function .... and all of
them throw the same exception:

An exception of type 'System.EntryPointNotFoundException' occurred in
ProductVision.Windows.Forms.dll but was not handled in user code
Additional information: Unable to find an entry point named
'BuildCompositeFile' in DLL 'asdHTMLCompare.dll'.

Any other suggestions?

Thanks.
Dave
From: Dave Wurtz on
On Jun 18, 8:47 am, Tom Shelton <tom_shel...(a)comcast.invalid> wrote:
> DaveWurtzformulated the question :
>
>
>
>
>
> > On Jun 7, 5:16 pm, "Herfried K. Wagner [MVP]" <hirf-spam-me-
> > h...(a)gmx.at> wrote:
> >> Am 08.06.2010 00:05, schriebDaveWurtz:
>
> >>> In my VB.NET application, I'm trying to call a function from a 32-bit,
> >>> non-.NET dll file and I'm having problems.  I believe I have the
> >>> correct signature for the dll with:
>
> >>> <System.Runtime.InteropServices.DllImportAttribute("asdHTMLCompare.dll")>
> >>>  >[...] When I run this, I get the error:
> >>> An exception of type 'System.EntryPointNotFoundException' occurred in
> >>> ProductVision.Windows.Forms.dll but was not handled in user code.
> >>> Additional information: Unable to find an entry point named
> >>> 'BuildCompositeFile' in DLL 'asdHTMLCompare.dll'.
>
> >> Maybe the function has a different name.  You may want to use Dependency
> >> Walker (<URL:http://www.dependencywalker.com/>) to examine the function
> >> the DLL exports.
>
> >> --
> >>   M S   Herfried K. Wagner
> >> M V P  <URL:http://dotnet.mvps.org/>
> >>   V B   <URL:http://dotnet.mvps.org/dotnet/faqs/>
>
> > Thanks for the reply.
>
> > As suggested, I downloaded the Dependency Walker program and opened
> > the DLL.  In looking at the function I want to call and selecting
> > "Undecorate C++ Functions", this is what it shows:
>
> > int BuildCompositeFile(char *,char *,char *,char *,char *,char *,int)
>
> > Do I have the correct signature defined?
>
> > Thanks.
> >Dave
>
> If the dll is exposing a decorated name, then you must alias the vb
> declare to the decorated name....
>
> --
> Tom Shelton- Hide quoted text -
>
> - Show quoted text -

I don't understand what you are saying. Can you expand on this and/or
show an example?

Thanks.
Dave
From: Tom Shelton on
Dave Wurtz submitted this idea :
> On Jun 18, 8:47�am, Tom Shelton <tom_shel...(a)comcast.invalid> wrote:
>> DaveWurtzformulated the question :
>>
>>
>>
>>
>>
>>> On Jun 7, 5:16�pm, "Herfried K. Wagner [MVP]" <hirf-spam-me-
>>> h...(a)gmx.at> wrote:
>>>> Am 08.06.2010 00:05, schriebDaveWurtz:
>>>>> In my VB.NET application, I'm trying to call a function from a 32-bit,
>>>>> non-.NET dll file and I'm having problems. �I believe I have the
>>>>> correct signature for the dll with:
>>>>> <System.Runtime.InteropServices.DllImportAttribute("asdHTMLCompare.dll")>
>>>>> �>[...] When I run this, I get the error:
>>>>> An exception of type 'System.EntryPointNotFoundException' occurred in
>>>>> ProductVision.Windows.Forms.dll but was not handled in user code.
>>>>> Additional information: Unable to find an entry point named
>>>>> 'BuildCompositeFile' in DLL 'asdHTMLCompare.dll'.
>>>> Maybe the function has a different name. �You may want to use Dependency
>>>> Walker (<URL:http://www.dependencywalker.com/>) to examine the function
>>>> the DLL exports.
>>
>>>> --
>>>> � M S � Herfried K. Wagner
>>>> M V P �<URL:http://dotnet.mvps.org/>
>>>> � V B � <URL:http://dotnet.mvps.org/dotnet/faqs/>
>>> Thanks for the reply.
>>
>>> As suggested, I downloaded the Dependency Walker program and opened
>>> the DLL. �In looking at the function I want to call and selecting
>>> "Undecorate C++ Functions", this is what it shows:
>>> int BuildCompositeFile(char *,char *,char *,char *,char *,char *,int)
>>> Do I have the correct signature defined?
>>> Thanks.
>>> Dave
>>
>> If the dll is exposing a decorated name, then you must alias the vb
>> declare to the decorated name....
>>
>> --
>> Tom Shelton- Hide quoted text -
>>
>> - Show quoted text -
>
> I don't understand what you are saying. Can you expand on this and/or
> show an example?
>

By default a dll compiled in C++ will mangle the names - this is to
allow overriding of functions. So, your function BuildCompositeFile
maybe exported as something like ?BuildCompositFile@@YXZ. That isn't
probably the actual name - I the way names are mangaled or decorated
has alot to do with the compiler, and the types being passed. But the
point is, the entery point in the dll is probably NOT
BuildCompositeFile.

You can use dumpbin /exports on your dll to see the actual name table.
So, say the name is as above, then you would need to add an alias to
your VB declare:

Declare Ansi Function BuildCompositFile Lib "asdHtmlCompare.dll" Alias
"?BuildCompositFile@@YXZ" (.....)

HTH

--
Tom Shelton


From: Herfried K. Wagner [MVP] on
Am 18.06.2010 20:03, schrieb Dave Wurtz:
>> If the dll is exposing a decorated name, then you must alias the vb
>> declare to the decorated name....
>
> I don't understand what you are saying. Can you expand on this and/or
> show an example?

Use the name you see prior to choosing to undecorate the function.

--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>