Кажется, что я могу использовать __declspec(dllexport)
и __declspec(dllimport)
взаимозаменяемо при сборке моей dll в Visual Studio 2015. При создании библиотеки DLL я бы подумал, что команда dllexport
потребуется, но кажется, что либо dllexport
или dllimport
достаточно. У меня есть следующий файл заголовка, объявляющий простые функции add ():
add.h
#pragma once
#ifdef ADDDLL_EXPORTS
#define ADDDLL_API __declspec(dllexport)
#else
#define ADDDLL_API __declspec(dllimport)
#endif
ADDDLL_API int add(int x, int y);
со следующим определением в файле cpp:
add.cpp
#include "add.h"
int add(int x, int y)
{
return x + y;
}
Кажется, я могу использовать встроенную DLL независимо от того, определена ли ADDDLL_EXPORTS
в Свойствах конфигурации> Препроцессор> Определения препроцессора.Например, в отдельном проекте, который включает в себя файл .lib в качестве дополнительной зависимости (Свойства конфигурации> Линкер> Вход> Дополнительные зависимости), у меня есть следующий код, который запускает
main.cpp
#include <iostream>
#include "add.h"
int main()
{
int sum = add(4, 5);
std::cout << "sum = " << sum << std::endl;
std::system("pause");
return 0;
}
Любое понимание приветствуется.Дайте мне знать, если потребуется дополнительная информация.Заранее спасибо!