如何在C++;dll?? 我正在寻找一种从我的C++ DLL导出一个具有两个重载的函数的方法。

如何在C++;dll?? 我正在寻找一种从我的C++ DLL导出一个具有两个重载的函数的方法。,c++,dll,export,C++,Dll,Export,这是我在.h文件上的重载: static __declspec(dllexport) int __stdcall TotalCost(char* a, double* b); static __declspec(dllexport) int __stdcall TotalCost(char* a, double* b, double c); 我的问题是: 是否可以导出函数的重载 如何在文件.def中设置导出 提前谢谢 Fabio是的,您可以导出重载 经典的方法是将以下宏定义添加到库标题中:

这是我在.h文件上的重载:

static __declspec(dllexport) int __stdcall TotalCost(char* a, double* b);
static __declspec(dllexport) int __stdcall TotalCost(char* a, double* b, double c);
我的问题是:

  • 是否可以导出函数的重载
  • 如何在文件.def中设置导出
提前谢谢
Fabio是的,您可以导出重载

经典的方法是将以下宏定义添加到库标题中:

#ifdef MYLIB_EXPORTS
  #define MYLIB_API __declspec(dllexport)
#else
  #define MYLIB_API __declspec(dllimport)
  #pragma comment(lib,"MYLIB.lib")
#endif
//...
在界面文件中使用上述宏:

MYLIB_API int ComputeTotal(...
class MYLIB_API C_MyClass...

您必须在DLL项目设置(C++/预处理器定义)中定义
MYLIB\u导出。

是的,这是可能的。你可以做到这一点,而不是通过名字。或者只包含带有
dllimport
的头文件,而不是
dllexport
。是否存在“静态”declspec(dllexport)的原因?对我来说似乎是矛盾的。