2

我正在尝试将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。

4

0 回答 0