C++ ';附加示例';:不一致的dll链接:在visual studio中使用空项目选项创建dll时
最小可复制示例: 创建项目时,我在菜单中选择了空项目。创建项目后,我确实将配置类型更改为dll 在此之后,我创建了两个文件,Calculations.h和cpp 两个文件的内容: 计算。hC++ ';附加示例';:不一致的dll链接:在visual studio中使用空项目选项创建dll时,c++,visual-studio,dll,dynamic-linking,C++,Visual Studio,Dll,Dynamic Linking,最小可复制示例: 创建项目时,我在菜单中选择了空项目。创建项目后,我确实将配置类型更改为dll 在此之后,我创建了两个文件,Calculations.h和cpp 两个文件的内容: 计算。h #pragma once #ifdef CALCULATIONS_EXPORTS #define CALCULATIONS_API __declspec(dllexport) #else #define CALCULATIONS_API __declspec(dllimport) #endif CAL
#pragma once
#ifdef CALCULATIONS_EXPORTS
#define CALCULATIONS_API __declspec(dllexport)
#else
#define CALCULATIONS_API __declspec(dllimport)
#endif
CALCULATIONS_API int AddIntImpl(int a, int b);
计算。cpp
#include "Calculations.h"
int AddIntImpl(int a, int b)
{
return a + b;
}
现在,当我建造同样的房子时,我得到了
1>Calculations.cpp
1>{...Path}\calculations.cpp(5): warning C4273: 'AddIntImpl': inconsistent dll linkage
1>{...Path}calculations.h(9): note: see previous definition of 'AddIntImpl'
如何解决此问题?一般来说,警告不会影响应用程序的运行。因此,编程时通常忽略警告 我建议您可以参考以下链接: 您可以尝试以下方法来消除警告: 1->单击项目->属性->配置属性->C/C++->高级->禁用特定警告,然后在文本框中添加4273 2->在程序中添加以下句子:#pragma warning(disable:4273)
3->关闭所有警告。在属性页中,打开C/C++文件夹->常规->警告级别并选择“关闭所有警告(/W0)”。在构建dll时是否添加了
计算\u导出
作为预处理器符号,以便将计算\u API
定义为\u declspec(dllexport)
?您只希望在构建dll时定义此项,而不是使用。不,对不起,我该如何做?相关:本演练假设您使用dll项目模板:我看到该模板在设置中为您添加了预处理器定义。我也尝试了遵循本教程,但我看到创建了类似dllmain、pch.h/cpp的文件。如果我用我的方式创建空项目而不选择dll,有什么区别吗?@Farhan Ahmed你有什么更新吗?如果您的案件已经解决,请帮助标记答案。如果没有,请随时与我们联系。您的理解与合作将不胜感激。