Używam w moim rozwiązaniu DllImport
.
Mój problem polega na tym, że mam dwie wersje tej samej biblioteki DLL, którą zbudowano dla wersji 32-bitowej, a drugą dla wersji 64-bitowej.Ustawianie programu dllimport programowo w C#
Oba prezentują te same funkcje o identycznych nazwach i identycznych podpisach. Moim problemem jest to, że muszę użyć dwóch statycznych metod, które je odsłaniają, a następnie w czasie wykonywania użyj rozmiaru IntPtr
, aby określić właściwy, który należy wywołać.
private static class Ccf_32
{
[DllImport(myDllName32)]
public static extern int func1();
}
private static class Ccf_64
{
[DllImport(myDllName64)]
public static extern int func1();
}
muszę to zrobić bo myDllName32
i myDllName64
musi być stała i nie znaleźli sposób, aby ustawić go w czasie wykonywania.
Czy ktoś ma eleganckie rozwiązanie do tego, aby pozbyć się powielania kodu i stałej kontroli rozmiaru IntPtr
.
Gdybym mógł ustawić nazwę pliku, musiałbym tylko raz sprawdzić i mógłbym pozbyć się tony powtarzającego się kodu.
sensu wybierając go w czasie wykonywania Jeśli różnica jest to cała kompilacja . – Havenard