The managed version of the CoApp engine still needs to export C functions from 
the CoApp-Engine.dll Assembly.

No .NET language supports exporting C style functions from the assembly, yet 
.NET does, if you use ILASM and hand code it to do that.  A couple years ago I 
built a tool to automatically do that using an Attribute (which I 
ever-so-cleverly called DllExport), and a command line tool to write the fixups.

The tool generates a .NET assembly that has the exports, and forwards the C 
call on to the managed static function.

By default, the tool takes a given .NET assembly (foo.dll) with functions 
marked with DllExport , it generates a companion assembly ($foo.dll). You can 
even debug straight from native to managed and back to native without doing 
anything special.

For a release build, the tool can merge the fixups right into the target 
DLL--so that foo.dll itself has the C functions exported.

It even supports callback functions (implemented as delegates in c#)

The tool is part of my gsToolkit I wrote: 
http://gstoolkit.codeplex.com/wikipage?title=DllExport&referringTitle=Home


public class CoAppEngine{

   public delegate int ResolveCallback(string packageName, string localPath, 
string url);

   [DllExport("coapp_resolve")]
   public static int MyFunction(string packagePath, ResolveCallback callback) {
      callback("foo", "bar", "http://foo";);
     return 0;
   }
}

and you can see the results:


C:\root\projects\CoApp\output\any\debug\bin>dumpbin /exports $coapp-engine.dll

Dump of file $coapp-engine.dll
File Type: DLL
  Section contains the following exports for $coapp-engine.dll
    00000000 characteristics
    4C780756 time date stamp Fri Aug 27 11:43:34 2010
        0.00 version
          0 ordinal base
           1 number of functions
           1 number of names

    ordinal hint RVA      name

          0    0 0000227E coapp_resolve


[Description: fearthecowboy]<http://fearthecowboy.com/>

Garrett Serack | Microsoft's Open Source Software Developer | Microsoft 
Corporation
Office:(425)706-7939                                       email/messenger: 
garre...@microsoft.com<mailto:garre...@microsoft.com>
blog: http://fearthecowboy.com<http://fearthecowboy.com/>                       
               twitter: @fearthecowboy<http://twitter.com/fearthecowboy>

I don't make the software you use; I make the software you use better on 
Windows.






<<inline: image001.gif>>

_______________________________________________
Mailing list: https://launchpad.net/~coapp-developers
Post to     : coapp-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~coapp-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to