Hmm that sounds right, but can you have unmanaged C++ in a file in a managed project? I think the answer must be no, but if Owen is only looking for source compatibility it might work. But, can you have managed cpp and cs in the same project? I didn't think so.
-----Original Message----- From: Unmoderated discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Eames, Andrew Sent: Wednesday, August 10, 2005 11:32 AM To: [email protected] Subject: Re: [ADVANCED-DOTNET] [Spam:***** SpamScore] Re: [ADVANCED-DOTNET] [Spam:***** SpamScore] Re: [ADVANCED-DOTNET] Can C# and unmanaged C++ coexist in the same solution? Same project? Yup - you can have both managed and unmanaged c++ in the same file Andrew -----Original Message----- From: Unmoderated discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Owen Cunningham Sent: Wednesday, August 10, 2005 11:31 AM To: [email protected] Subject: [Spam:***** SpamScore] Re: [ADVANCED-DOTNET] [Spam:***** SpamScore] Re: [ADVANCED-DOTNET] Can C# and unmanaged C++ coexist in the same solution? Same project? And that can be done all within the same project? -----Original Message----- From: Unmoderated discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Eames, Andrew Sent: Wednesday, August 10, 2005 11:27 AM To: [email protected] Subject: Re: [ADVANCED-DOTNET] [Spam:***** SpamScore] Re: [ADVANCED-DOTNET] Can C# and unmanaged C++ coexist in the same solution? Same project? Just make a managed C++ wrapper class with a static member function, the implementation of which calls your unmanaged function Andrew -----Original Message----- From: Unmoderated discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Bob Provencher Sent: Wednesday, August 10, 2005 11:21 AM To: [email protected] Subject: [Spam:***** SpamScore] Re: [ADVANCED-DOTNET] Can C# and unmanaged C++ coexist in the same solution? Same project? Off the top of my head I don't think that can be done. Are you looking for source or binary compatibility? You could try to come up with some C++ macros so your C++ code is valid C#, or write some kind of preprocessor? -----Original Message----- From: Unmoderated discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Owen Cunningham Sent: Wednesday, August 10, 2005 11:15 AM To: [email protected] Subject: Re: [ADVANCED-DOTNET] Can C# and unmanaged C++ coexist in the same solution? Same project? Thanks for the quick response, Bob. I may have made this more complicated than it needs to be. I don't really need a full unmanaged C++ class -- I just need an unmanaged C++ function. I am at a point where I could build a separate DLL that exports the function and P/Invoke it from C#, but I really want to avoid having two projects. I'd like to just be able to have my project Foo contain two source files, Foo.cs and Foo.cpp. So I guess my question is, what sort of keywords/directives, if any, would I need to put in my .CPP file to let the compiler/linker make my unmanaged function public? And what keywords/directives would I need to put in my .CS file to let my C# code reference the unmanaged function? -----Original Message----- From: Unmoderated discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Bob Provencher Sent: Wednesday, August 10, 2005 11:06 AM To: [email protected] Subject: Re: [ADVANCED-DOTNET] Can C# and unmanaged C++ coexist in the same solution? Same project? I'm not sure about the namespace issue, but you can call unmanaged C++ from C# in two ways (that I can think of right now) but both require you to implement some soft of wrapper to call them through interop. The first is through COM, by wrapping or implementing your C++ classes as COM objects. The second is by creating a standard C Api that wraps your objects. Generally you would need to provide cdecl function for every public method of your classes and pass the object as a handle or something in the method, for example (my C++ may be a little rusty): class Foo { Foo() { } int Use( int param ); } extern "C" { HFOO CreateFoo(); int UseFoo( HFOO h, int param ); }; HFOO CreateFoo() { return (HFOO)( new Foo() ); } int UseFoo( HFOO hfoo, int param ) { Foo* p = (Foo*)hfoo; return p->Use( param ); } If you understand the C++ calling conventions and name mangling you may be able to call directly into methods without the wrapper but I wouldn't recommend trying that. -----Original Message----- From: Unmoderated discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Owen Cunningham Sent: Wednesday, August 10, 2005 10:30 AM To: [email protected] Subject: [ADVANCED-DOTNET] Can C# and unmanaged C++ coexist in the same solution? Same project? I would like to be able to write an unmanaged C++ class, have it reside within a namespace already defined in my project/solution, and instantiate/call it from within C# code in the same namespace. =================================== This list is hosted by DevelopMentor(r) http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentor. http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentor(r) http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentor(r) http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentor(r) http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com BEGIN-ANTISPAM-VOTING-LINKS ------------------------------------------------------ Teach CanIt if this mail (ID 4450533) is spam: Spam: http://mail-gw.cognex.com/canit/b.php?c=s&i=4450533&m=43715e7d09fc Not spam: http://mail-gw.cognex.com/canit/b.php?c=n&i=4450533&m=43715e7d09fc Forget vote: http://mail-gw.cognex.com/canit/b.php?c=f&i=4450533&m=43715e7d09fc ------------------------------------------------------ END-ANTISPAM-VOTING-LINKS =================================== This list is hosted by DevelopMentor. http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentorĀ® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com
