次のコードはなぜ機能しませんか?"Parameter is incorrect"でAddDllDirectoryへの呼び出しが失敗するのはなぜですか?
open System
open System.Runtime.InteropServices
open System.ComponentModel
[<DllImport("kernel32")>]
extern int AddDllDirectory(string NewDirectory)
[<EntryPoint>]
let main argv =
let result = AddDllDirectory("c:\\")
if result = 0 then
printfn "%A" <| Win32Exception(Marshal.GetLastWin32Error())
// Prints: "System.ComponentModel.Win32Exception (0x80004005): The parameter is incorrect"
System.Console.ReadLine() |> ignore
0 // return an integer exit code
ああ、CharSetを設定しないとアンマネージ文字列型を指定する必要があるのはなぜですか?それは漠然としても意味をなさない。私はUnicodeがデフォルトだと思ったのですが? – mavnn
いいえ、ANSIはデフォルト(http://msdn.microsoft.com/en-us/library/7b93s42f.aspx)です。絶対に必要な場所(例:GetProcAddress)でしか使用できないため、奇妙です。 –