我在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#有点新意,所以对于一个技术娴熟的程序员来说可能会有一些明显的东西。
谢谢!
答案 0 :(得分:3)
你要将32位lib加载到64位exe中,反之亦然
尝试转到项目属性并关闭'更喜欢32位'