Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3442194
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 18, 20262026-05-18T08:38:23+00:00 2026-05-18T08:38:23+00:00

I have a problem with a P/Invoke call I’m trying to do. I have

  • 0

I have a problem with a P/Invoke call I’m trying to do. I have to call a C++ class from a C# program. I have the source of this class so what I did is put it in a DLL project and create export functions to access it’s main method. That should be enough to do what I need and keep things simple.

My export method looks like this :

extern "C" _declspec(dllexport) void Inference(double *c1, double *c2, double *c3, double *result)
{
    /* somecode */
}

This compiles, and I can see the export in a dumpbin output.

Now the problem is, I can’t call this method from my C# code because I always get a PInvokeStackInbalance exception, telling me that

This is likely because the managed
PInvoke signature does not match the
unmanaged target signature.

I tried calling the method with this :

[DllImport("InferenceEngine.dll")]
extern static unsafe void Inference(double *c1, double *c2, double *c3, double *result);

I also tried this :

[DllImport("InferenceEngine.dll")]
extern static void Inference(ref double c1, ref double c2, ref double c3, ref double result);

… which were both possible ways documented on MSDN but with no luck. Does anyone have any clue about what the problem is ?

Thanks !

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-18T08:38:24+00:00Added an answer on May 18, 2026 at 8:38 am

    You should declare your C++ function as __stdcall, which is the P/Invoke default:

    extern "C" _declspec(dllexport) void __stdcall Inference(double *c1, double *c2, double *c3, double *result);
    

    It’s also possible to leave the C++ prototype alone and change the P/Invoke declaration:

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

    cdecl isn’t used often with P/Invoke, probably because the Windows API is stdcall.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have code that uses methods from the SSPI dll (security.dll) via P/Invoke, which
I have problem compilin this code..can anyone tell whats wrong with the syntax CREATE
I have a problem in my project with the .designer which as everyone know
I have a problem debugging Invoke() or BeginInvoke() in Visual Studio 2008. For instance
I have a problem only with IE: if I try to invoke a JS
I have a closed source unmanaged DLL coded in C++ that I wanted to
I'm trying to invoke a dialog on the UI dispatcher : class DialogService :
I've got a p-invoke call to an unmanaged DLL that was failing in my
I have a deadlock when I invoke the UI thread from a worker thread.
I am struggling with this problem since last one week. I have obfuscated exe

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.