Solved

Accessing C++ code(unmanaged & if possible, managed as well) in C#

Posted on 2007-04-06
3
406 Views
Last Modified: 2013-12-17
I want to write a managed C++ class that I can then access in C# code.  The C++ class will contain unmanaged code as well.  The C++ class has to keep things in memory as well.  It's a class that deals with image manipulation, so I gotta keep a USHORT* in memory (it has to be this type or some other type that easily converts into USHORT* because we use 3rd party code for image enhancement and it requires USHORT*). So, it has to be something that can be long-lived.  When I use a function that causes the buffer to change and then use another function to access that buffer later on, i want to access the newly changed one, not a new instance.  I've tried creating an MFC DLL and just started trying to create a C++ Class library instead.  I can't get anything to work.  Can anybody give me any pointers on how to deal with this? I"ve never done cross-platform stuff before AND its also my first time working in C#.  Any help would be appreciated.  Any websites or examples you could point me towards would also be appreciated.
0
Comment
Question by:raw_enha
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 16

Expert Comment

by:AlexNek
ID: 18867402
0
 
LVL 48

Accepted Solution

by:
AlexFM earned 500 total points
ID: 18868820
You need to create C++/CLI Class Library. Class exported from this library has pure .NET interface and can be accessed from any .NET language. Internally clas can allocate unmanaged resources.
C++/CLI allows to write mixed managed/unmanaged code, this technology sometimes called IJW (It Just Work). To use unmanaged code in C++/CLI project, you only need to include required h-files, add .lib files if necessary, and call unmanaged code directly.
I don't suggest you to use PInvoke because C++/CLI is much beter for interoperability.
0
 
LVL 48

Expert Comment

by:AlexFM
ID: 18868826
0

Featured Post

Stack Overflow Podcast - Frustrating Miracles

In this podcast, Stack Overflow interviewed Linux Academy CEO/Founder, Anthony James, and got his developer story!

"Follow your passion, be prepared to work hard and sacrifice, and, above all, don't let anyone limit your dreams."  - Donovan Bailey

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…

636 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question