Как импортировать C / C ++ dll в приложение .NET - PullRequest
2 голосов
/ 10 августа 2010

В моем новом проекте я хочу использовать существующие функции C C ++.Для этого мне нужно добавить dll C / C ++ в проект C #.

Мои проекты C / C ++ имеют тип UnManaged и не являются COM-проектом.Я видел несколько статей после MSDN и пытался:

[DllImport("user32.dll", EntryPoint="MessageBoxA")]

Но я не уверен, где я должен разместить user32.dll или my.dll.Нужно ли мне помещать мою DLL в GAC или в другую физическую папку.

Если это будет физическая папка, разве мне не нужно использовать относительный или абсолютный путь?

Также прочитайте несколько статей, рассказывающих о переносе библиотек C ++ с использованием InterOp, носовершенно уверен, как начать.

Ответы [ 2 ]

3 голосов
/ 10 августа 2010

Пожалуйста, не помещайте свои собственные DLL в C: \ Windows \ system32. Если вы собираетесь использовать часть Windows, например user32.dll, вы никуда ее не поместите, она уже есть и будет найдена во время выполнения, потому что C: \ Windows \ system32 находится на пути. Если вы собираетесь использовать свою собственную DLL, поместите ее в папку bin или bin \ Debug или любую другую папку рядом с вашей исполняемой программой. Это проще всего сделать, добавив его в проект, чтобы он копировал в выходной каталог при сборке, но у вас может быть MSI или что-то еще. Если он используется несколькими приложениями, вы должны решить, хотите ли вы, чтобы все они начали использовать новое после его обновления или довольны существующими копиями. Это может быть сложный вопрос, и у вас достаточно работы для одного приложения, верно?

Что касается точки входа, это имя функции внутри DLL. Если вы используете одно и то же имя в вашем управляемом коде, вы можете его пропустить. Это позволяет сопоставить имя функции DLL, которое может оказаться сложным, с более простым именем, которое вы используете в управляемом коде.

2 голосов
/ 10 августа 2010

Вы можете поместить его в папку приложения bin.

...