Как использовать библиотеку заголовков C DLL в C # - PullRequest
1 голос
/ 29 июня 2010

Я очень новичок в C #, и я пытаюсь использовать пакет справки для моего проекта. Пакет написан на языке c и имеет 1) / bin / несколько файлов .dll 2) / include / имеет заголовочный файл 3) файл / lib / msvc / .lib мой вопрос, как я могу использовать эти файлы в моем проекте C # WPF? я знаю, что в C # нет «#include», и .dll нельзя импортировать, добавив ссылку на проект так как я могу сделать это в C #?

Спасибо

Ответы [ 5 ]

5 голосов
/ 29 июня 2010

Вам необходимо добавить серию определений метода C # Вызов платформы . Это говорит C #, как вызывать в .dll и использовать C API напрямую.

Файлы заголовка и библиотеки полностью не используются.

2 голосов
/ 30 июня 2010

Просто добавив к ответам, вы можете заглянуть в это сообщение в блоге.Он имеет ссылку на надстройку Visual Studio, которая может генерировать подписи P / Invoke из ваших заголовков.

Best

1 голос
/ 29 июня 2010

Вы можете найти управляемый C ++ полезным. Вы можете написать управляемую библиотеку C ++, которая будет напрямую использовать файлы заголовков и .lib и обернуть их набором классов .NET, которые будут использоваться C #.

0 голосов
/ 30 июня 2010

Есть много способов сделать это "взаимодействие" - однажды я выступил с докладом "взаимодействие с вращением головы". Ключ - это структура вашей родной DLL. Поскольку вы говорите, что он на C, есть вероятность, что он в идеальной форме для использования с PInvoke, который лучше всего работает с функциями C или функциями стиля C в C ++. Другие ответы имеют отличные указатели на синтаксис, и некоторые помогают объявить вашу функцию (и параметры, которые она принимает) на стороне C #.

Двумя другими основными опциями являются оболочка C ++ / CLI, хороший выбор, когда функции принимают много сложных типов, или COM, которые почти наверняка потребуют от вас изменить собственный код, так что это не очень подходит для этого. ситуация.

0 голосов
/ 29 июня 2010

Вам нужно использовать pInvoke

http://msdn.microsoft.com/en-us/library/aa288468%28VS.71%29.aspx

...