【问题标题】:Using a regular dll with shared mfc dll使用带有共享 mfc dll 的常规 dll
【发布时间】:2016-05-24 08:21:23
【问题描述】:

我有一个带有共享 mfc dll 的常规 dll。它建立在 vc++ 6.0 之上。我想在 vc++ 2008 windows 窗体应用程序中使用它。它有一个头文件、一个 lib 和一个 dll。 我正在添加一些上述头文件的行

   #ifdef   DLLBUILD
   #define  DLLFUNC   extern "C" __declspec(dllexport) WINAPI
   #else
   #define  DLLFUNC   extern "C" __declspec(dllimport) WINAPI
   #endif 

   DLLFUNC int SC06StepInit(void)

当我添加此标题时,它会显示多个相同类型的错误

错误 C2144:语法错误:'int' 应该以 ';' 开头
错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 没有 支持默认整数

错误从DLLFUNC int SC06StepInit(void) 行开始到以相同名称DLLFUNC 开头的所有行。我不知道使用名称而不是返回类型和名称来启动任何函数。

这个dll的源代码也具有相同的所有功能。

我想知道。这种定义函数的方式是什么,调用和使用这样的库。

【问题讨论】:

  • 试试int DLLFUNC ... - 更改顺序。我很确定类型必须在调用约定之前。
  • 这个 dll 正在使用一些程序并且运行良好。我不是这个 dll 的开发者。我想用它。我想知道这种格式是什么以及如何使用它
  • 您正在向头文件中“添加一些行”,并且您得到的编译器错误正好指向您添加的行。这很好地表明这些行在语法上是不正确的,不是吗?

标签: visual-c++ dll mfc shared-libraries


【解决方案1】:

试试这个:

#ifdef   DLLBUILD
#define  DLLFUNC   extern "C" __declspec(dllexport)
#else
#define  DLLFUNC   extern "C" __declspec(dllimport)
#endif 

DLLFUNC int SC06StepInit(void);

你在宏中尝试了太多:

  • 外部“C”
  • DLL 导入/导出属性
  • WINAPI规范

限制它。了解您应该如何导出函数,以及您的 DLL 的客户端是谁。

【讨论】:

  • 让我澄清一下。回答我问题的人可能会认为我正在开发一个 dll,但事实并非如此。我是这个库的客户,由于这种语法对我来说是新的,所以无法使用它。
  • 如果您是客户,请问谁开发了 DLL 并给了您这样的标头。如果他们没有给你标题,你可以使用 Dependency Walker 来查找 函数的外观
猜你喜欢
  • 2011-02-08
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2012-01-18
  • 2012-04-17
  • 2011-02-12
  • 2010-09-28
  • 1970-01-01
相关资源
最近更新 更多