在x64中构建Win32项目时出现错误LNK 2001

时间:2019-05-14 08:39:27

标签: c++ fpga lnk2001

我正在尝试在x64平台上构建项目。该项目最初是在Win32平台上构建的。首先,我尝试构建一个生成一些.dll和.lib文件的项目。它的构建没有错误。然后,我尝试构建一个具有主要功能的项目,并应该生成一个.exe文件。当我尝试构建它时,对于未解析的外部符号,我收到此LNK2001错误。错误之一如下

main.obj:错误LNK2001:无法解析的外部符号__imp_FMC110_openCard

其中,“ FMC110_openCard”是在.cpp中声明的函数的名称以及其名为“ Fmc110Lib”的.h文件。所有错误均来自此“ Fmc110Lib”文件中的函数,并且每个错误都缺少的外部符号像“ __imp_functionName”。

我使用dumpbin命令检查了main.obj文件中的修饰名称,对于Win32和x64 main.obj都是如此。在Win32 main.obj中有修饰的名称,例如“ __imp_FMC110_openCard”,而在x64 main.obj中没有修饰的名称。实际上,这些功能根本没有修饰名称。如何解决这些错误?

这里有几点要提:

1)main.cpp代码由一些函数的定义和一个main组成。

2)在“ Fmc110Lib.h”中,有一些预处理器指令,例如:

#ifdef FMC110LIB_EXPORTS
#define FMC110LIB_API __declspec(dllexport)
#else
#define FMC110LIB_API __declspec(dllimport)
#endif

满足第一个条件的位置,因此“ dllimport”未激活。 Win32和x64都是这种情况。

3)在“ Fmc110Lib.h”中有一个“ extern C”块定义。

4)main.cpp使用一些include .cpp和.h文件,它们包含具有“ * ifdef WIN32”定义的函数。我还必须包括“ ifdef WIN64”吗?

0 个答案:

没有答案