Visual C ++, нет ссылок, пытающихся добавить .dll - PullRequest
0 голосов
/ 06 ноября 2011

Я создал простой .dll и пытаюсь использовать его в простом тестовом проекте.Тем не менее, когда я пытаюсь добавить ссылку, у меня нет выбора, и нет опции «Обзор».

У меня есть подозрения, что это может иметь отношение к моему PATH, как при установке CMake (зависимость для несвязанного невизуального студийного проекта) CMake решил удалить ВСЕ в моем PATH.

см. мой скриншот: http://jsfiddle.net/t84BS/ (data-uri может не отображаться в IE)

Я представляю, что должен видеть там, по крайней мере, некоторые ссылки .NET.

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

В нативном C ++ вы не добавляете библиотеки DLL в качестве ссылок.Вы должны включить заголовок и ссылку на файл LIB или DEF, созданный из DLL.

Сначала необходимо включить заголовки, предоставляющие необходимый код.Убедитесь, что все функции DLL помечены здесь как __declspec(dllimport) (они должны быть dllexport при сборке самой DLL, dllimport при ее использовании).Это может занять определение в верхней части файла или что-то.Один из распространенных методов:

#ifdef IMPORT_MY_LIB
#    define MY_LIB_API __declspec(dllimport)
#else
#    define MY_LIB_API __declspec(dllexport)
#endif

Далее вам необходимо создать ссылку на LIB.Для этого есть два метода, один из которых более точен, а другой проще.

Правильный метод - перейти к свойствам проекта, в настройках компоновщика, в разделе ввода, добавить библиотеку в качестве дополнительной зависимости (параметры должны выглядеть так, как в VS2008 и 2010, возможно, в других).

Более простой метод, который я использую для тестирования и заменяю на правильный перед производством, заключается в добавлении:

#pragma comment(lib, "Library.lib")

директива к одному из ваших файлов.

Файл LIB создается при компиляции DLL и должен использоваться для связи этой DLL с другими.

Существует метод связывания во время выполнения с использованием Windows API, который можетбудет интересен позже, но не обязательно для этого.

1 голос
/ 06 ноября 2011

Я не уверен, что вы должны видеть в вашей IDE.У вас есть файл .def?Чтобы получить все экспортированные символы из dll, запустите dumpbin /EXPORTS my.dll

В отношении переменной PATH запустите for %G in ("%path:;=" "%") do @echo %G, чтобы увидеть каждый путь в отдельной строке.

Чтобы добавить новые пути, введите PATH=%PATH%;C:\My\New\Path

Возможно, все пути заданы, чем где-то перезаписаны.проверьте ваш autoexec.bat Наконец, просто переустановите Visual Studio.

...