Вы можете использовать эту библиотеку из CodePlex, но вам придется немного ее изменить, чтобы она работала с spssio64.dll, который входит в состав модуля ввода / вывода.В файле SpssThinWrapper.cs
вам нужно изменить импортируемую DLL.Вам также придется изменить некоторые точки входа.Чтобы получить имена точек входа в 64-битной DLL, вам нужно запустить dumpbin /exports spssio64.dll
.Если вы сделаете это, вы увидите, что 64-битные и 32-битные точки входа в основном совпадают, за исключением того, что некоторые из 32-битных имеют знак @ и число после них, тогда как ни одна из 64-битные точки входа делают.Измените все это вместе с DLL в атрибуте DllImport.Например:
[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 из папки win64 модуля ввода / вывода в папку ресурсов из библиотеки SPSS .NET из CodePlex.Это перезапишет существующие 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 * и проверяет, что они находятся вправильный порядок и все.