Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编译链接x86静态库的x64动态库时使用LNK2001和LNK1120 我最近被分配到C++项目,虽然我不是C++开发人员。我被提供VisualStudio2010专业版作为IDE。所以我试了一下 我要编写一个C++动态库(*.dll),它封装两个静态库(*.LIB)。静态库是我们几年前从另一家公司购买的第三方库。使用dumpbin/header…cmd调用,我可以说两个静态库都有以下文件头值: 14C machine (x86)_C++_Visual Studio 2010_Dll_Static Libraries_Lnk2001 - Fatal编程技术网

编译链接x86静态库的x64动态库时使用LNK2001和LNK1120 我最近被分配到C++项目,虽然我不是C++开发人员。我被提供VisualStudio2010专业版作为IDE。所以我试了一下 我要编写一个C++动态库(*.dll),它封装两个静态库(*.LIB)。静态库是我们几年前从另一家公司购买的第三方库。使用dumpbin/header…cmd调用,我可以说两个静态库都有以下文件头值: 14C machine (x86)

编译链接x86静态库的x64动态库时使用LNK2001和LNK1120 我最近被分配到C++项目,虽然我不是C++开发人员。我被提供VisualStudio2010专业版作为IDE。所以我试了一下 我要编写一个C++动态库(*.dll),它封装两个静态库(*.LIB)。静态库是我们几年前从另一家公司购买的第三方库。使用dumpbin/header…cmd调用,我可以说两个静态库都有以下文件头值: 14C machine (x86),c++,visual-studio-2010,dll,static-libraries,lnk2001,C++,Visual Studio 2010,Dll,Static Libraries,Lnk2001,我让这个任务为Win32解决方案平台工作。我将头文件和库添加到项目中。通过在.cpp中编写两条#pragma comment(lib,…)语句来包含这些库。我需要在中使用函数。工作起来很有魅力。示例函数如下所示: extern "C" void OURFreeStringBuf(Cm_StringBuf *sbuf) { FreeStringBuf(sbuf); // the call to the static library } 此动态库也将用于x64体系结构。因此,我尝试将解决方

我让这个任务为Win32解决方案平台工作。我将头文件和库添加到项目中。通过在.cpp中编写两条
#pragma comment(lib,…)
语句来包含这些库。我需要在中使用函数。工作起来很有魅力。示例函数如下所示:

extern "C" void OURFreeStringBuf(Cm_StringBuf *sbuf)
{
    FreeStringBuf(sbuf); // the call to the static library
}
此动态库也将用于x64体系结构。因此,我尝试将解决方案平台设置为x64。现在,每次调用一个静态库函数(未进行代码更改或其他配置更改)都会出现以下错误:

后面是一个汇总错误:

error LNK1120: 29 unresolved external links
这些错误是否可能是尝试在x64 dll中链接x86 lib文件的结果?是否有机会使用提供的静态库完成此任务


非常感谢您。

您无法将32位库链接到64位可执行文件或DLL(或32位可执行文件链接到64位DLL,反之亦然)。您必须将.DLL/.EXE编译为32位,或者查找32位库的64位版本。没有其他解决办法


64位体系结构在几个方面不同于32位体系结构,但最重要的是,在64位体系结构中,地址(指针)是64位的,这会阻止几乎任何32位代码在64位环境中正常工作(因为地址的上32位丢失,这不会产生任何有意义的信息)。

您只遗漏了错误消息的基本部分。您是指LNK2001错误中的“…”吗?很抱歉,在上面的示例中,可以用我想要调用的函数名替换“…”:错误LNK2001:未解析的外部符号“FreeStringBuf”。
error LNK1120: 29 unresolved external links