从64位目标应用程序调用32位库文件

4

我正在编写一个64位目标的C++程序。我需要调用一个针对32位环境的第三方.lib文件中的命令,但是在尝试这样做时,我收到了LNK2001错误。这样做可能吗?

2个回答

7

不能直接将32位代码链接到64位可执行文件中。

或许你可以创建一个单独的32位进程来托管你的静态库,并在你的64位程序中编写一个存根API,使用进程间通信来代表你执行32位进程上的代码。


你知道如何做这个的好例子吗?另外,32位进程向64位进程传递大量数据是否可行? - rossb83
任何IPC机制都可以使用:DCOM、套接字、命名管道、共享内存等等。这些技术大多数在两个进程之间传输大量数据时没有问题。 - Aaron Klotz
有没有简单的例子可以教我在Windows上使用C++编写通过共享内存通信的客户端/服务器应用程序? - rossb83
好的,事实证明这只需要两行代码,问题解决了...暂时解决了... HANDLE Index = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 1, "Index"); Buffer = (unsigned char*) MapViewOfFile(Index, FILE_MAP_ALL_ACCESS, 0, 0, 1); - rossb83

5

你无法在应用程序中直接实现这一点。

你最好的选择是获得一个64位版本的库。

如果你无法做到这一点,你可以创建一个独立的32位应用程序作为你的主程序和库之间的中介,使用套接字或管道进行通信。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接