2015-06-16 9 views
1

Я использовал ILNumerics через Excel DNA в Excel успешно в течение некоторого времени. Теперь я написал новую функцию, которая использует функцию linsolve от ILNumerics (которой нужен файл mkl_custom.dll), и я не могу построить это в XLL. Моя пользовательская функция работает в отладке, поэтому я предполагаю, что в упаковке идет не так.ДНК Excel с ILNumerics

Вот мой днк файл:

<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 самостоятельно, чтобы загрузить его в этот процесс, он должен работать, когда ему это нужно.

+0

спасибо, Говерт! Не могли бы вы рассказать немного? Вы имеете в виду, что я должен использовать Assembly.loadfrom() или [DLLImport()] или как мне это сделать, пожалуйста? – nik

+0

Другим, более простым способом было бы использовать текущую версию. Он поставляется с установщиком, который устанавливает систему mkl и все управляемые сборки в масштабе всей страны. Таким образом, вам больше не придется иметь дело с bin32/bin64/folders. –

+0

@ HaymoKutschbach: хорошо, это было бы проще всего, но на этой неделе я установил ILNumerics через пакет NuGet. Как мне получить новую версию? Спасибо! – nik