2014-11-06 3 views
0

Я разрабатываю приложение, которое обменивается данными с некоторыми аппаратными средствами, используя C++ DLL, предоставляемую поставщиком оборудования. У меня также есть файл заголовка для этой DLL, но нет исходного файла. В моем приложении C#, я пытаюсь импортировать и вызывать функции DLL, как это:Импорт и использование C++ DLL-функций в приложении C#

public class MyClass 
{ 
    [DllImport("CaGe.dll")] 
    public static extern long someLibraryFunction(); 

    public void callLibFunction() 
    { 
     Console.WriteLine("function call: " + someLibraryFunction()); 
    } 
} 

Library.dll файл находится в той же папке, что и файл MyClass.cs, а также остальной части проекта файлы. Однако, когда я запускаю сеанс отладки, я сначала получаю диалоговое окно из системы, в котором говорится: CAGE InitDll: Erro в библиотеке загрузки «CdbClientInit», и после того, как я нажму ОК, это нечеткое исключение в строке, где я вызываю библиотечную функцию occours.

Исключение говорит: System.DllNotFoundException: Исключение из HRESULT: 0x8007045A

я нашел в Интернете, что это может быть вызвано отсутствующим DLL, сколько нужно CaGe.dll, так что я пытался поставить DLL через Уолкер зависимости, но результаты немного запутывают меня. В CAGE.DLL есть вкладки WS32_32.DLL, VERSION.DLL, KERNEL.DLL и USER32.DLL. Я полагаю, что библиотеки, которые мне нужны, находятся где-то под вкладкой USER32.DLL, но я не признаю ни одного из них (если недостающая DLL является причиной этой проблемы).

Любые советы будут очень appretiated :)

+5

Проблема может быть более вероятно, что ваша программа не может найти ' CaGe.dll'. Вы сказали, что он находится в том же каталоге, что и исходные файлы, но это не то место, где ваш исполняемый файл создается (по умолчанию.) Попробуйте поместить DLL в Bin \ Debug или Bin \ Release, где находится исполняемый файл вашей программы. –

+0

Да, это решило, спасибо :) –

ответ

-1

Больше помогают использовать функцию C++ в C#, пожалуйста, проверьте ниже URL

http://www.codeproject.com/Questions/107152/Using-a-C-dll-in-a-C-application

+0

На самом деле это не ответит на вопрос. Предоставление ссылки на ресурс вне сайта и ничего больше не добавляет ничего в Stack Overflow. Пожалуйста, не делай этого. Пожалуйста, найдите время, чтобы включить суть здесь. Если вы хотите включить ссылки для дальнейшего чтения, это тоже хорошо. –

Смежные вопросы