我创建了一个名为Test Lib的DLL项目:
// main.h
#ifndef __MAIN_H__
#define __MAIN_H__
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
extern "C" {
DLL_EXPORT void print();
}
#endif
// main.cpp
#include "main.h"
#include <iostream>
#define BUILD_DLL
using std::cout;
using std::endl;
extern "C" {
DLL_EXPORT void print() {
cout << "Success" << endl;
return;
}
}
以上代码来自我在网上发现的一个我能理解的例子。当我尝试编译和/或构建它时,我得到以下错误&amp;警告:
error: function 'void print()' definition is marked dllimport
In function 'void print()':
warning: 'void print()' redeclared without dllimport attribute: previous dllimport ignored
这是我创建的第二个库,因为我试图在第一个库中复制一个问题,当发生这种情况时。怎么了?我正在使用Code :: Blocks。
答案 0 :(得分:3)
在包含头文件BUILD_DLL
之前,您需要定义main.h
。
#define BUILD_DLL
#include "main.h"
在程序中,您使用print
声明__declspec(dllimport)
,因为未定义BUILD_DLL
时会处理头文件。