HI,
I have a C++ function like the following:
int ShowJob(const JobData& data);
How does this translate to a DLLImport statement which I can use to call the function from C#?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
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.
This could only work if JobData is a structure. You’re dead in the water if it is a class, you cannot create a C++ class instance in C#. You don’t have access to the constructor and destructor.
The “const” keyword is an attribute checked by the C++ compiler, it has no relevance to C# code. A C++ reference is a pointer under the hood, you’ll get one by declaring the argument with “ref”. You’re likely to have a problem getting the “ShowJob” export name right, it is normally decorated by the C++ compiler. You’d suppress that decoration by prefixing the function with extern “C” in the C++ code. If you cannot change the C++ code then you can find the exported name by running Dumpbin.exe /exports on the DLL.
Putting this all together, the declarations ought to resemble something like this:
Lot’s of guess work going on here, you’ll need to verify this with your actual C++ code. If the JobData argument is in fact a class then you’ll need to write a ref class wrapper in the C++/CLI language.