我们使用Scintilla.NET(1.7)组件开发WinForm应用程序,该组件使用SciLexer.dll(unamnaged)。在运行时,我们分发32位和64位SciLexer.dll,并在应用程序启动时加载正确的一个(一切正常)。
在我们的新开发环境(Windows 7 64位)上,我们所有的解决方案都构建并运行得很好,但WinForm可视化设计器不会加载使用Scintilla.NET的表单/控件,因为它无法加载正确的SciLexer的.dll:
Window class name is not valid.
at System.Windows.Forms.NativeWindow.WindowClass.RegisterClass()
at System.Windows.Forms.NativeWindow.WindowClass.Create(String className, Int32 classStyle)
at System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp)
at System.Windows.Forms.Control.CreateHandle()
at System.Windows.Forms.Control.get_Handle()
at Scintilla.ScintillaControl.SendMessageDirect(UInt32 msg, IntPtr wParam, IntPtr lParam)
at Scintilla.ScintillaControl.SendMessageDirect(UInt32 msg)
at Scintilla.ScintillaControl.get_CodePage()
at Scintilla.ScintillaControl..ctor(String sciLexerDllName)
at Scintilla.ScintillaControl..ctor()
Visual Studio 2008在哪里寻找非托管库?我尝试将64位SciLexer.dll放在SysWOW64中,在引用ScintillaNET.dll的文件夹中,在PATH系统变量中添加一个文件夹,在项目中添加文件夹引用,但我一直收到此错误。
感谢任何帮助。
答案 0 :(得分:3)
好的,我明白了:我是64位系统上的总菜鸟,我认为SysWOW64文件夹适用于64位库:)
将32位SciLexer.dll放在SysWOW64中就像一个魅力。
答案 1 :(得分:3)
得到了同样的错误。您可以将这些dll的位置添加到PATH环境变量(不要忘记重新启动VS以使更改生效),而不是弄乱您的操作系统文件夹。