65.9K
CodeProject 正在变化。 阅读更多。
Home

从 .NET 4.0 调用 J# 代码

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.33/5 (2投票s)

2011年3月22日

CPOL
viewsIcon

12515

如何在 .NET 4.0 应用程序中调用 J# 代码

引言

当你从 .NET 4.0(或更高版本)代码调用 J# DLL 时,会收到一个错误,提示找不到 vjsnativ.dll。 到目前为止的解决方法是将 vjsnativ.dll 复制到调用代码的主要应用程序的目录中。 对于应用程序来说,这可行,但有点麻烦。 但对于 Web 应用程序来说,这可能非常棘手,因为你正在与底层 Web 服务器交互。

事实证明,有一个更简单的方法。 以下代码需要在 C# 代码中实例化任何类或调用 J# DLL 中的任何代码之前调用。 调用此代码后,就可以调用所有 J# 代码了。 诀窍很简单——显式加载库,然后 Windows 就会知道它的位置。

代码

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!");
}
}
} 

调用方法

最好的方法是将此代码放在初始化阶段,在进行任何 J# 库调用之前。 这样你就无需在每次调用之前进行检查了。

最初发布于 从 .NET 4.0 调用 J# 代码

历史

  • 2011 年 3 月 22 日:初始发布
© . All rights reserved.