在C#中嵌入Julia

时间:2016-03-14 15:56:24

标签: c# julia embedding

我在Github上提取了与此here相关的post代码,但它对我不起作用。

我正在运行Windows 10,Visual Studio 2012,而我的julia目录是c:\ julia-0.4.3 \ bin。我对代码做了一些小改动以反映我的路径:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace ConsoleApplication1
{
    class Program
    {
        [DllImport("libjulia.dll", CallingConvention = CallingConvention.Cdecl)]
        public static extern void jl_init(string julia_home_dir);

        [DllImport("libjulia.dll", CallingConvention = CallingConvention.Cdecl)]
        public static extern void jl_eval_string(string str);

        static void Main(string[] args)
        {
            // Pass

            jl_init(@"C:\Julia-0.4.3\bin");

            // Crash
            jl_eval_string("print(sqrt(2.0))");

        }
    }
}

当我在Visual Studio中运行程序时,我得到: 尝试加载格式不正确的程序。 (HRESULT异常:0x8007000B)

如果我将ConsoleApplication1.exe文件复制到c:\ julia-0.4.3 \ bin并从cmd行运行它,我得到: 未处理的异常:System.BadImageFormatException:尝试加载格式不正确的程序。 (HRESULT异常:0x8007000B)    在ConsoleApplication1.Program.jl_init(String julia_home_dir)    在ConsoleApplication1.Program.Main(String [] args)

我做错了什么,或者Windows 10可能是罪魁祸首?我对C#有点新意,所以对于一个技术娴熟的程序员来说可能会有一些明显的东西。

谢谢!

1 个答案:

答案 0 :(得分:3)

你要将32位lib加载到64位exe中,反之亦然

尝试转到项目属性并关闭'更喜欢32位'