У меня возникла проблема с созданием dll на Visual Studio 2013. Этот код работает на Code :: Blocks. Ошибка была definition of dllimport function not allowed" on line void DLL_EXPORT prim(map<string, vector<int>> nodes, map<pair<string, string>, pair<int, string>> edges)
. Как это исправить?Ошибка C2491: определение функции dllimport не разрешено
main.h:
#ifndef __MAIN_H__
#define __MAIN_H__
#include <windows.h>
#include <iostream>
#include <vector>
#include <map>
using namespace std;
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C"
{
#endif
void DLL_EXPORT prim(map<string,vector<int>> nodes, map<pair<string,string>,pair<int,string>> edges);
#ifdef __cplusplus
}
#endif
#endif // __MAIN_H__
И второй файл:
main.cpp:
#include "main.h"
//some other includes
// a sample exported function
extern "C"
{
void DLL_EXPORT prim(map<string, vector<int>> nodes, map<pair<string, string>, pair<int, string>> edges)
{
//some code
}
}
Я попытался исправить это, но у меня нет больше понятия. Когда я изменил функцию prim во втором файле от определения до объявления, dll компилировалась без ошибок, но без кода, ответственного за реализацию алгоритма.
Спасибо за все ответы.
Edit:
добавить временный #define BUILD_DLL к main.h, а затем в CMake и I работ. Спасибо за ответы.