Click here to Skip to main content
15,867,308 members
Articles / .NET / .NET4
Tip/Trick

Calling a J# DLL from .NET 4.0

Rate me:
Please Sign up or sign in to vote.
0.00/5 (No votes)
25 Feb 2011CPOL 13.2K   1  
Calling a J# DLL from .NET 4.0

Introduction


When you call a J# DLL from .NET 4.0 (or later) code, you will get an error that vjsnativ.dll could not be located. The work-around to date has been to copy vjsnativ.dll to the directory of the primary application calling the code. For an app, this is workable although a bit of a pain. But for web apps, this can be very problematic as you're talking the underlying web server.

It turns out there's a much easier approach. The following code needs to be called in your C# code before instantiating any classes or calling any code in a J# DLL. After you call this, you can then call all of your J# code. The trick is simple – you load the library explicitly and then Windows already knows its location.

Code


C#
using System;
using System.IO;
using System.Runtime.InteropServices;
using net.windward.api.csharp;
namespace TestNet40
{
class Program
{
[DllImport("kernel32", SetLastError = true)]
static extern IntPtr LoadLibrary(string lpFileName);
static void Main(string[] args)
{
if (Environment.Version.Major > 4)
{
string folder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), @"..\Microsoft.NET\Framework\v2.0.50727");
folder = Path.GetFullPath(folder);
LoadLibrary(Path.Combine(folder, "vjsnativ.dll"));
}
// now call J# code
Report.Init();
Console.Out.WriteLine("success!");
}
}
}

Calling It


The best approach is if you can place this in your initialization well before you make any calls to any J# libraries. That way, you don't need to check before each call.
Originally posted at Calling J# code from .NET 4.0

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Chief Technology Officer Windward Studios
United States United States
CTO/founder - Windward Studios

Comments and Discussions

 
-- There are no messages in this forum --