2015-06-16 17 views
1

我已经在Excel中成功使用了通过Excel DNA的ILNumerics一段时间。现在我编写了一个使用ILNumerics的linsolve函数的新函数(它需要mkl_custom.dll),并且我无法将其构建到XLL中。 我的自定义函数在调试中工作,这就是为什么我认为在包装中出错的原因。带有ILNumerics的Excel DNA

这里是我的DNA文件:

<DnaLibrary Name="Nik's Lib" RuntimeVersion="v4.0"> 
    <ExternalLibrary Path="MyLib2010.dll" Pack="true"/> 
    <Reference Path="ILNumerics.dll" Pack="true"/> 
    <Reference Path="mkl_custom.dll" Pack="true"/> 
</DnaLibrary> 

当打包这个我得到的错误消息mkl_custom.dll

path not found 

这可能是由于路径到DLL的文件夹结构:

enter image description here

如何牛逼任何指针o解决这个将不胜感激。

回答

2

Excel-DNA包装目前不支持本机或混合程序集。所以你将无法使用该机制打包mkl库。

您可以将它作为资源存储在C#程序集中,并在运行时自动解压缩(在AutoOpen或其他任何使用它的函数运行之前)。如果你将它提取到一个临时文件中,然后自己调用LoadLibrary将它加载到进程中,它应该在ILNumerics需要时运行。

+0

谢谢Govert!你能否详细说明一下?你的意思是我应该使用Assembly.loadfrom()或[DLLImport()],或者我会怎么做呢? – nik

+0

另一种更简单的方法是使用当前版本。它带有一个安装程序,它可以在系统范围内安装mkl和所有托管程序集。这样你就不必处理bin32/bin64 /文件夹了。 –

+0

@HaymoKutschbach:好的,这将是最简单的,但本周我只通过NuGet包安装了ILNumerics。那么我将如何获得新版本?谢谢! – nik