我正在尝试将https://code.google.com/p/twaindotnet/用于我们在 Windows 2008 终端服务器(64 位)上运行的内部应用程序。我发现很少有人评论这个库不能在 64 位机器上本地使用,并且它(以及所有使用它的应用程序)应该针对 x86 平台进行编译。(我正在使用 VS2010)但是,问题是:
- 示例应用程序 - TestAppWpf(来自 TwainDotNET 包) - 在(我们的)服务器上正常工作时,针对任何 CPU 进行编译(因此在服务器上以 64 位模式运行)。
- 我的(即使是最简单的示例)使用 Prism 和 Unity/MEF 的应用程序总是崩溃,异常是“尝试加载格式不正确的程序(HRESULT 的异常:0x8007000B)”
[使用的代码总是相同的:
Loaded += delegate
{
try
{
Twain _twain;
var hook = new WpfWindowMessageHook(App.Current.MainWindow);
_twain = new Twain(hook);
}
catch (Exception ex)
{
MessageBox.Show(GetText(ex, true), "twain", MessageBoxButton.OK, MessageBoxImage.Error);
};
};
catch 部分目前只是愚蠢的“转储”......当即将调用 twain_32.dll(DsmParent 函数)库时,首先发生异常
[DllImport("twain_32.dll", EntryPoint = "#1")]
public static extern TwainResult DsmParent([In, Out] Identity origin, IntPtr zeroPtr, DataGroup dg, DataArgumentType dat, Message msg, ref IntPtr windowHandle);
]
- 我也尝试重新编译整个项目和库以针对 x86,但仍然有类似的结果 - TestAppWpf 有效而我的应用程序无效。
- 无需提及,在我的开发机器(32 位)上,一切都像魅力一样。
我完全迷失了试图找到示例应用程序和我自己的应用程序(都在 64 位环境中运行)之间的差异。
任何建议/提示/或技巧将不胜感激。
马丁·F。