Click here to Skip to main content
15,881,172 members
Articles / All Topics

Calling J# Code from .NET 4.0

Rate me:
Please Sign up or sign in to vote.
4.33/5 (2 votes)
22 Mar 2011CPOL 12.1K   3   1
How to call J# code in a .NET 4.0 app

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 workaround 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 to 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.

History

  • 22nd March, 2011: Initial post

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

 
GeneralIKVM Pin
Mathias S.23-Mar-11 10:05
Mathias S.23-Mar-11 10:05 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.