そのライブラリは CodePlex から使用できますが、I/O モジュールに含まれている spssio64.dll で動作するように少し変更する必要があります。ファイルでは、SpssThinWrapper.cs
インポートされている DLL を変更する必要があります。また、いくつかのエントリ ポイントを変更する必要があります。64 ビット DLL のエントリ ポイントの名前を取得するには、dumpbin /exports spssio64.dll
. これを行うと、64 ビットと 32 ビットのエントリ ポイントが基本的に同じであることがわかります。ただし、32 ビットのものには @ 記号とその後ろに数字が付いているものがありますが、64 ビットのものはありません。ビット エントリ ポイントが行います。DllImport 属性の DLL とともに、これらすべてを変更してください。例えば:
[DllImport("spssio32.dll", EntryPoint="spssCloseAppend@4", CharSet=CharSet.Ansi, SetLastError=true, ExactSpelling=true)]
public static extern ReturnCode spssCloseAppend(int handle);
になる
[DllImport("spssio64.dll", EntryPoint = "spssCloseAppend", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
public static extern ReturnCode spssCloseAppend(int handle);
等々。
これを行った後、正しい DLL を使用していることを確認する必要があります。spssio64.dll、icudt32.dll、icuin32.dll、および icuuc32.dll を、I/O モジュールの win64 フォルダーから CodePlex の SPSS .NET ライブラリーの Resources フォルダーにコピーします。これは既存の 32 ビット dll を上書きするため、32 ビットと 64 ビットの両方が必要な場合は別のことを行う必要がありますが、64 ビットだけが必要なように聞こえるので、これでうまくいくはずです。
.sav
このライブラリを使用して を簡単に作成できる例として、次のようにします。
using (SpssDataDocument spssDoc = SpssDataDocument.Create("test.sav")) {
SpssVariable v = new SpssNumericVariable();
v.Name = "gender";
v.Label = "What is your gender?";
v.ValueLabels.Add(1, "Male");
v.ValueLabels.Add(2, "Female");
doc.Variables.Add(v);
doc.CommitDictionary();
SpssCase c = doc.Cases.New();
c["gender"] = 1;
c.Commit();
}
ライブラリはすべての spss* 呼び出しを処理し、それらが正しい順序で行われていることを確認します。