【发布时间】:2015-10-23 09:36:26
【问题描述】:
这个例子看起来再简单不过了:
//Example.h
#pragma once
#ifdef EXPORTING_DLL
extern __declspec(dllexport) void HelloWorld();
#else
extern __declspec(dllimport) void HelloWorld();
#endif
//Example.cpp
#include "Functions.h"
#define EXPORTING_DLL
void HelloWorld()
{
}
那么,我有什么问题?好的,当尝试按原样编译时,即在 VS 中创建 dll 类型项目之后,我收到警告:
警告 C4273: 'HelloWorld': 不一致的 dll 链接
如果我将 cpp 文件中 HelloWorld 的定义更改为:
__declspec(dllimport) void HelloWorld()
{
}
我收到错误:
错误 C2491 'HelloWorld':不允许定义 dllimport 函数
另一方面,如果我将 HelloWorld 的定义更改为:
__declspec(dllexport) void HelloWorld()
{
}
我收到警告:
警告 C4273 'HelloWorld':不一致的 dll 链接
知道如何定义它以便在没有任何警告的情况下编译吗?我的意思是,这些警告至少令人担忧。
【问题讨论】:
-
在包含头文件后定义
EXPORTING_DLL。因此,当包含头文件时,它认为它正在导入 dll。 -
@MikeVine 嗨,迈克,嘿,我认为您应该将此评论添加为答案,以便我接受。现在 +1 非常感谢!
标签: c++ dll visual-studio-2015