C++ 使用C++-导出的函数

C++ 使用C++-导出的函数,c++,import,include,export,C++,Import,Include,Export,我已经在谷歌上搜索了好几天了,我似乎无法对这个问题保持清醒的头脑 我有一个头,它将一些函数导出到库中。此文件名为test_extern.h,函数如下所示: __declspec(dllexport) int aFunction(int a, int b); 我还有另外两个文件,一个是.h和.cpp,它在导出文件的帮助下计算一些东西。我已经精简了版本,以显示我想做什么 A.h文件: // Include CBaseDILI_J1939 header file. class A : public

我已经在谷歌上搜索了好几天了,我似乎无法对这个问题保持清醒的头脑

我有一个头,它将一些函数导出到库中。此文件名为test_extern.h,函数如下所示:

__declspec(dllexport) int aFunction(int a, int b);
我还有另外两个文件,一个是.h和.cpp,它在导出文件的帮助下计算一些东西。我已经精简了版本,以显示我想做什么

A.h文件:

// Include CBaseDILI_J1939 header file.
class A : public CBaseDILI_J1939
{
public:
  int bFunction(int a, int b);
}
A.cpp文件:

#include "test_extern.h"
#include "A.h"

int A::bFunction(int a, int b) {
  return aFunction(a, b);  // REturn the value of the exported function!
}
现在,当我运行它时,我得到“错误LNK2019:未解析的外部符号\u imp\u affunction”


我已经阅读了所有关于导出dll的内容,有人知道我可能做错了什么吗?

您必须将调用模块中的dll函数声明为dllspec(dllimport)。

您必须将调用模块中的dll函数声明为dllspec(dllimport)。

@Karadur是正确的

检查此链接上的示例:。 答案在这一页的底部

在A.cpp中,将其添加到顶部

\uu declspec(dllimport)inta函数(inta,intb)

@Karadur是对的

检查此链接上的示例:。 答案在这一页的底部

在A.cpp中,将其添加到顶部


\uu declspec(dllimport)inta函数(inta,intb)

运行链接器时,您指定了哪些库文件?我不会向链接器添加任何额外内容。我必须这样做吗?我只是想链接器会找到它,是在一个不同的项目中运行的吗?在这种情况下,标题中的声明是不够的。你是否有dll中的库?@Karadur解决了它!在使用这些函数之前,我忘记了导入它们。很容易修复,但当您盯着代码看了几个小时后,很难找到它;)@杰里科芬你是对的。重建解决方案时,我也必须指定.lib文件,否则链接器将找不到我的函数。运行链接器时,您要指定什么库文件?我不会向链接器添加任何额外内容。我必须这样做吗?我只是想链接器会找到它,是在一个不同的项目中运行的吗?在这种情况下,标题中的声明是不够的。你是否有dll中的库?@Karadur解决了它!在使用这些函数之前,我忘记了导入它们。很容易修复,但当您盯着代码看了几个小时后,很难找到它;)@杰里科芬你是对的。我在重建解决方案时也指定了.lib文件,否则链接器将找不到我的函数。非常感谢!哈哈,这么简单,但却很难找到!非常感谢你!哈哈,这么简单,但却很难找到!非常感谢。这帮了大忙!别忘了查看msdn,你会发现很多对windows开发有用的帖子。尽管事实上我不喜欢微软,也不喜欢在他们的平台上开发很多东西。他们的支持是迄今为止最好的…谢谢!这帮了大忙!别忘了查看msdn,你会发现很多对windows开发有用的帖子。尽管事实上我不喜欢微软,也不喜欢在他们的平台上开发很多东西。他们的支持是目前为止最好的。。。