1

SciLexer.dll (管理されていない) を使用する Scintilla.NET (1.7) コンポーネントを使用して WinForm アプリケーションを開発します。実行時に、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 はアンマネージ ライブラリをどこで検索しますか? ScintillaNET.dllが参照されているフォルダーのSysWOW64に64ビットのSciLexer.dllを配置し、PATHシステム変数にフォルダーを追加し、プロジェクトにフォルダー参照を追加しようとしましたが、このエラーが引き続き発生します。

どんな助けでも大歓迎です。

4

2 に答える 2

3

同じエラーが発生しました。OSフォルダーを台無しにする代わりに、これらのdllの場所をPATH環境変数に追加できます(変更を有効にするためにVSを再起動することを忘れないでください)

于 2012-11-17T21:07:08.390 に答える
3

わかりました、私はそれを理解しました:私は64ビットシステムの完全な初心者であり、SysWOW64フォルダーは64ビットライブラリ用だと思っていました:)

32 ビットの SciLexer.dll を SysWOW64 に配置するのは魅力的です。

于 2010-05-25T16:34:42.340 に答える