Quote:Original post by Ancient Spirit
By the way, when I say Visual C++ and MFC... Are those 2 different things?
Very. Visual C++ is the brand name for Microsoft's integrated development environment (IDE) for C++. Visual C++ is a part of Visual Studio, which has evolved over the years to let the various "Visual" products share components such as the text editor. The compiler is known as Microsoft C++
x, where
x is the version number (currently at 8.0).
The Microsoft Foundation Classes (MFC) are a collection of C++ classes and preprocessor code (and macros) that greatly simplify the process of writing Win32 GUI code. MFC has shipped with Visual C++ for at least 12 years; I first encountered them both in Visual C++ 1.52, which was my first C++ compiler.
Quote:Original post by Ancient Spirit
So basically I can use C++ for the class design and C# only for the GUI?
Yes, you can. You have two alternatives:
You can write an "unmanaged" C++ DLL (with C interfaces, naturally) which is made accessible to C# via
interop. This is best if you are going to expose a limited number of APIs from your C++ DLL to C#, and communication is simple: pass native type (int, byte arrays) arguments to the DLL, retrieve integer type return values.
You can also write a managed assembly in C++/CLI, placing the interoperability layer between managed and unmanaged code within your assembly. This has the advantage of making the overall assembly much easier to use, as well as making it available to the full range of .NET languages (C#, VB.NET, F#, Nemerle, PERL.NET, COBOL.NET, FORTRAN.NET, IronPython, etc).
Quote:I have managed to combine fortran and C\C++ code and some ASM code with it as well.
The mechanisms are very different. First, all of the above expose C declarations (you can pass C++ declarations because name mangling makes them unrecognizable). Secondly, it sounds like you linked them all into a single binary file. Using the .NET assembly-based method, each language can generate its own assembly (produce code) and any other language can use it (consume code).
It's a very different approach.