2010-08-10 2 views
2

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

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

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

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

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

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

ответ

3

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

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

2

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

+0

Что относительно точки входа? – Simsons