The*_*hmu 2 c++ dll static-libraries visual-studio-2010 lnk2001
我最近被分配到一个c ++项目,虽然我不是一个c ++开发人员.我被提供为Visual Studio 2010 Professional作为IDE.所以我试了一下.
我要编写一个c ++动态库(*.dll),它包含两个静态库(*.lib).静态库是我们几年前从另一家公司购买的第三方库.使用dumpbin /header ...cmd调用,我可以说两个静态库都有以下文件头值:
14C machine (x86)
Run Code Online (Sandbox Code Playgroud)
我让这个任务适用于Win32解决方案平台.我将头文件和库添加到项目中.通过#pragma comment(lib, ...)在.cpp中编写两个语句来包含库我需要函数.工作就像一个魅力.示例函数如下所示:
extern "C" void OURFreeStringBuf(Cm_StringBuf *sbuf)
{
FreeStringBuf(sbuf); // the call to the static library
}
Run Code Online (Sandbox Code Playgroud)
此动态库也将用于x64体系结构中.所以我尝试将解决方案平台设置为x64.现在,每次调用一个静态库函数时都会出现以下错误(没有进行代码更改或进行其他配置更改):
error LNK2001: unresolved external symbol "..."
Run Code Online (Sandbox Code Playgroud)
然后是总结错误:
error LNK1120: 29 unresolved external links
Run Code Online (Sandbox Code Playgroud)
这些错误可能是尝试在x64 dll中链接x86 lib文件的结果吗?有没有机会使用提供的静态库完成此任务?
非常感谢你提前.
你不能 - 换句话说,没有办法 - 将32位库与64位可执行文件或DLL(或32位可执行文件链接到64位DLL,反之亦然).您将要么将.DLL/.EXE编译为32位,要么找到64位版本的32位库.没有其他解决方案
64位架构在几个方面与32位架构不同,但最重要的是,64位架构中的地址(指针)是64位,这可以防止几乎任何32位代码在64位环境(因为地址的高32位丢失,这不会产生任何有意义的东西).
| 归档时间: |
|
| 查看次数: |
1667 次 |
| 最近记录: |