你可以为Windows中的多个架构编译单个.dll吗?

时间:2014-03-08 22:59:07

标签: windows macos dll shared-libraries

我在mac上注意到我的一些共享对象(dylib)是具有两种架构的二进制文件。我相信这可以通过单独编译i386和x86_64来实现,然后使用the lipo utility to create the universal executable

$ file /usr/lib/libpoll.dylib
/usr/lib/libpoll.dylib: Mach-O universal binary with 2 architectures
/usr/lib/libpoll.dylib (for architecture x86_64):   Mach-O 64-bit dynamically linked shared library x86_64
/usr/lib/libpoll.dylib (for architecture i386): Mach-O dynamically linked shared library i386

然而,就我在我的Windows系统上检查.dll文件而言,它们都是一个架构。 Here are some ways to check the architecture a .dll was compiled for

有没有办法可以为两种不同的架构编译单个.dll文件(例如x86_64和i386)?

1 个答案:

答案 0 :(得分:2)

在Mac OS中,您可以编译所谓的 fat binary 多架构二进制文件。这在Windows中不可用。非托管PE可执行文件是32位或64位,但从不两者兼而有之。

另一方面,.net程序集可以为AnyCPU编译,并将适应其主机的位数。

但是对于非托管模块,它是一个或另一个。