使用64或32位p / invoke

时间:2014-11-06 12:31:46

标签: c# dll dllimport

前提:我有两个DLL,一个是32位和64位,它们都有相同的方法。

问题:我无法在任何地方使用32位版本。

[DllImport("Epsonx86.dll")]
private static extern int PrintLine(string line);
[DllImport("Epsonx64.dll")]
private static extern int PrintLine(string line);
...

显然,我不能用这个:

string dllName = Environment.Is64BitOperatingSystem ? "Epsonx64.dll" : "Epsonx86.dll";

[DllImport(dllName)] //Error here.
...

那么,如何使代码与两者兼容而不必大量if's

修改

我正在执行Interface实施......好吧,我开始使用Interface

 IEpson print;

 if (Environment.Is64BitOperatingSystem)
 {
     print = new InterfaceEpsonNfx64();
 }
 else
 {
     print = new InterfaceEpsonNfx86();
 }

 print.PrintLine("BlaBla");

0 个答案:

没有答案