Les and Folks, I have some useful information on this I hope.

I had to compile the C# app as platform x86 to consume the Borland XE5 C++
DLL's functions, but I'm guessing the author just used the defaults and
didn't specifically force me to do that.

The C++ function was defined as __declspec(dllexport) and the managed
runtime Exception implied I was "almost" calling the function. This simple
change made it work okay:

[DllImport("foo.dll", CallingConvention=CallingConvention.Cdecl)]

Bring backa memory from the 1990s. We still have to check that strings are
marshalled back-and-forth correctly.

Greg


On 8 October 2013 11:29, Les Hughes <l...@datarev.com.au> wrote:

> Greg Keogh wrote:
>
>> Folks, I've got some DLLs written in Borland C++ with functions that I
>> have to import for use in some C# code. I can see the functions inside the
>> DLLs using depends.exe, but I can't get the signatures correct and I get
>> "unbalanced stack" errors runtime due to mismatching signatures.
>>  Is there some technique I can use to convert the DLL functions into
>> correctly matching methods with [DLLImport]? The weak link at the moment is
>> the human one, me.
>>  Greg K
>>
>
> Solution is to destroy the weak link! Use a robot!
>
> Have you tried this: 
> https://clrinterop.codeplex.**com/<https://clrinterop.codeplex.com/>It's 
> *meant* to do make things easier.
>
> Another thought: Could it be that your app is expecting 64-bit integers
> from a 32-bit dll?
>
> Cheers,
> --
> Les Hughes
> l...@datarev.com.au
>
>
>

Reply via email to