DotNetNewsgroup.com  
web access to complete list of Microsoft.NET newsgroups
   home   |   control panel login   |   archive  |  
 
  carried group
academic
adonet
aspnet
aspnet.announcements
aspnet.buildingcontrols
aspnet.caching
aspnet.datagridcontrol
aspnet.mobile
aspnet.security
aspnet.webcontrols
aspnet.webservices
assignment_manager
datatools
dotnet.distributed_apps
dotnet.general
dotnet.myservices
dotnet.nternationalization
dotnet.scripting
dotnet.security
dotnet.vjsharp
dotnet.vsa
dotnet.xml
dotnetfaqs
framework
framework.clr
framework.compactframework
framework.component_services
framework.controls
framework.databinding
framework.drawing
framework.enhancements
framework.interop
framework.odbcnet
framework.performance
framework.remoting
framework.sdk
framework.setup
framework.webservices
framework.windowsforms
framework.wmi
frwk.windowsforms.designtime
lang.csharp
lang.jscript
lang.vb
lang.vb.controls
lang.vb.data
lang.vb.upgrade
lang.vc
lang.vc.libraries
  
 
start date: Wed, 8 Aug 2007 17:51:18 -0400,    posted on: microsoft.public.dotnet.framework.clr        back       

Thread Index
  1    Schemer am
          2    Sheng Jiang[MVP] uss
          3    (Jeffrey Tan[MSFT])
          4    Schemer am
                 5    (Jeffrey Tan[MSFT])


Using managed code in unmanaged app   
Hello,

I am interested in calling managed code from an unmanaged app.  I have been 
able to do it using a C++ wrapper to call in to a C# dll using 
ExecuteInDefaultAppDomain().  That is a pretty restrictive method, though.

Is there a way to use an arbitrary managed code library from unmanaged code?

TIA for any info.
Date:Wed, 8 Aug 2007 17:51:18 -0400   Author:  

Re: Using managed code in unmanaged app   
use CLR host APIs
see http://msdn.microsoft.com/msdnmag/issues/06/08/CLRInsideOut/default.aspx

-- 
Sheng Jiang
Microsoft MVP in VC++
"Schemer" <jumper@nospam.nospam> wrote in message
news:uBNaEZg2HHA.5160@TK2MSFTNGP05.phx.gbl...

> Hello,
>
> I am interested in calling managed code from an unmanaged app.  I have
been
> able to do it using a C++ wrapper to call in to a C# dll using
> ExecuteInDefaultAppDomain().  That is a pretty restrictive method, though.
>
> Is there a way to use an arbitrary managed code library from unmanaged
code?
>
> TIA for any info.
>
>
Date:Wed, 8 Aug 2007 18:39:25 -0500   Author:  

RE: Using managed code in unmanaged app   
Hi Schemer,

There are 2 ways to use managed class assembly from native code: COM 
interop and CLR hosting. "Sheng Jiang[MVP]" has provided the link regarding 
CLR hosting. 

Using COM interop, you may use regasm.exe to read the metadata of the 
assembly add entries into the registry.  When a COM client calls a .NET 
object, the .NET Framework will create a COM callable wrapper (CCW). COM 
clients use the CCW as a proxy for the managed object. Please refer to the 
articles for details:
"Exposing .NET Components to COM"
http://www.codeproject.com/dotnet/nettocom.asp
".NET Interoperability - Calling a .NET Component from a COM Component"
http://www.devcity.net/PrintArticle.aspx?ArticleID=28
".NET Interop: Get Ready for Microsoft .NET by Using Wrappers to Interact 
with COM-based Applications"
http://msdn.microsoft.com/msdnmag/issues/01/08/interop/

Hope this helps.

Best regards,
Jeffrey Tan
Microsoft Online Community Support
==================================================
Get notification to my posts through email? Please refer to 
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues 
where an initial response from the community or a Microsoft Support 
Engineer within 1 business day is acceptable. Please note that each follow 
up response may take approximately 2 business days as the support 
professional working with you may need further investigation to reach the 
most efficient resolution. The offering is not appropriate for situations 
that require urgent, real-time or phone-based interactions or complex 
project analysis and dump analysis issues. Issues of this nature are best 
handled working with a dedicated Microsoft Support Engineer by contacting 
Microsoft Customer Support Services (CSS) at 
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
Date:Thu, 09 Aug 2007 06:27:17 GMT   Author:  

Re: Using managed code in unmanaged app   

> use CLR host APIs
> see 
> http://msdn.microsoft.com/msdnmag/issues/06/08/CLRInsideOut/default.aspx
>


Thanks for the reply.  It is from that article that I learned about 
ExecuteInDefaultAppDomain().
However, methods called via ExecuteInDefaultAppDomain() must have a specific 
signature:
  static int pwzMethodName (String pwzArgument)

Is there another technique for calling managed code from unmanaged, without 
the restrictions of ExecuteInDefaultAppDomain?
Date:Thu, 9 Aug 2007 08:45:30 -0400   Author:  

Re: Using managed code in unmanaged app   
Hi Schemer,

The v2.0 hosting APIs are really all about using the AppDomainManager which 
will get loaded into your process.  You can have the AppDomainManager 
P/Invoke back into your host and pass a delegate out that you can then call 
(just make sure to pin it if you're going to keep it alive for longer then 
the duration of the call).

Alternately you could look at 
System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate and 
GetDelegateForFunctionPointer to marshal by hand delegates back and forth 
between the two sides.  

A more general way is through a COM interface implemented by a managed 
type. You create an instance of the type by calling 
AppDomain.::CreateInstanceAndUnwrap(), then QueryInterface for the COM 
interface, and do normal COM method calls on it.

Thanks.

Best regards,
Jeffrey Tan
Microsoft Online Community Support
==================================================
Get notification to my posts through email? Please refer to 
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues 
where an initial response from the community or a Microsoft Support 
Engineer within 1 business day is acceptable. Please note that each follow 
up response may take approximately 2 business days as the support 
professional working with you may need further investigation to reach the 
most efficient resolution. The offering is not appropriate for situations 
that require urgent, real-time or phone-based interactions or complex 
project analysis and dump analysis issues. Issues of this nature are best 
handled working with a dedicated Microsoft Support Engineer by contacting 
Microsoft Customer Support Services (CSS) at 
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
Date:Sat, 11 Aug 2007 03:34:14 GMT   Author:  

Google
 
Web dotnetnewsgroup.com


COPYRIGHT ?2005, EUROFRONT WORLDWIDE LTD., ALL RIGHT RESERVE  |   Contact us