c#中调用其它语言的库总结

c#中调用其它语言的库总结

c/c++:

  • 1.标准c类库

标准c类库是按照C标准规范实现的一个C动态链接库
这种可以使用以下方法进行导入使用:

[DllImport("yourDll.dll", EntryPoint = "GetValue")]
public static extern bool GetValue(ref byte P1, ref byte P2, ref byte P3);

参数中带指针的:

[DllImport("yourDll.dll"]   
Private static extern int GetValue([MarshalAs(UnmanagedType.LPArray)]byte[] pValue);
  • 2.非标准c类库

这种类库一般情况下需要封装成c类库后调用,但也有人会将这种库封装成com组件进行使用

python:

  • 1.python脚本中不包含第三方模块

NuGet 安装IronPython或引入IronPython.dll和Microsoft.Scripting.dll

ScriptEngine pyEngine = Python.CreateEngine();//创建Python解释器对象
 dynamic py = pyEngine.ExecuteFile(@"test.py");//读取脚本文件
再利用脚本对象调用脚本中的函数
  • 2.python脚本中包含第三方模块

使用Process启动python脚本进程,进行调用,当程序调用rsa加密等的时候要修改sys.path

java:

安装IKVM.NET并将其加入环境变量
NuGet安装IKVM或引用IKVM.OpenJDK.Core.dll,IKVM.Runtime.dll,IKVM.Runtime.JNI.dll和IKVM.OpenJDK.ClassLibrary.dll
对其转成dll

ikvmc commons-httpclient-3.1.jar -r:commons-logging-1.1.3.dll -r:commons-codec-1.6.dll

然后在c#程序里调用

Go:

golang类库一般用TDM-gcc编译成类库进行调用

go build -buildmode=c-shared -o yourdll.dll

vb:

封装成com组件调用

javascript:

执行ExecuteScript js代表从文件读取上来的javascript字符串funcName函数名, argument参数

object o = ExecuteScript(string.Format("{0}('{1}')", funcName, argument), js);
/// <summary>
/// 执行JS
/// </summary>
/// <param name="sExpression">参数体</param>
/// <param name="sCode">JavaScript代码的字符串</param>
/// <returns></returns>
private object ExecuteScript(string sExpression, string sCode)
{
     MSScriptControl.ScriptControl scriptControl = new MSScriptControl.ScriptControl();
     scriptControl.UseSafeSubset = true;
     scriptControl.Language = "JScript";
     scriptControl.AddCode(sCode);
     try
     {
         return scriptControl.Eval(sExpression);
     }
     catch (Exception ex)
     { }
     return null;
}

Ruby:

通过NuGet安装IronRuby进行调用或引入Microsoft.Scripting.dll 和Ruby.dll进行调用

ScriptModule module = ScriptDomainManager.CurrentManager.CreateModule("yourruby");
module.SetVariable("test", "this is a test");
RubyEngine.CurrentEngine.Execute("puts test", module);

R:

通过引入RDotNet.dll和RDotNet.Native.dll来进行调用

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值