2015-09-04 80 views
-3

我想为以下平台创建一个DLL(使用C#)。为64位和32位环境创建DLL

  1. 32位机& 32位操作系统
  2. 64位机& 32位操作系统
  3. 64位计算机& 64位操作系统

在这种情况下应该是什么平台的目标,因为我使用Visual Studio 2008.

请回复。

+0

听起来很像一套很好的要求。你能行的! – MickyD

回答

1

除非您使用平台调用特定的Win32 API函数,COM或第三方编译的代码,否则Any CPU目标是好的。

在.NET中,目标平台不会更改已编译的中间语言,但它只是限制执行您的库和可执行文件的位置的限制。

例如,如果您在Debug|x64中编译,那么您的代码在32位操作系统中将不可执行。

总结:编译Debug|AnyCPURelease|AnyCPU和您的软件在任何操作系统和CPU架构的工作与C#(即[DllImport])访问本机代码的例外,你需要确保本地代码访问从32位或64位的进程取决于本机代码的目标平台。

+0

创建的DLL在32位机器上的32位操作系统上工作正常。但在64位计算机上的64位操作系统上尝试使用相同的错误消息时,我收到了以下错误消息。 **调用System .__ ComObject.DetectCardReader失败,出现此消息:无法加载DLL'ACR120U.DLL':指定的模块找不到。 (来自HRESULT的异常:0x8007007E)** – user724817

+0

@ user724817因此您输入我的答案的例外部分。然后,您需要在'Debug | x86'和'Debug | x64'中编译并确保COM对象可用于32位和64位进程 –

+0

我们将从Debug | x86和Debug | x64创建两个不同的dll? ? – user724817