Я использую DllImport
в своем решении.
Моя проблема в том, что у меня есть две версии одной и той же DLL, одна для 32-битной, а другая для 64-битной.
Они оба предоставляют одинаковые функции с одинаковыми именами и одинаковыми сигнатурами.
Моя проблема заключается в том, что мне нужно использовать два статических метода, которые предоставляют их, а затем во время выполнения использовать IntPtr
размер, чтобы определить правильный вызываемый.
private static class Ccf_32
{
[DllImport(myDllName32)]
public static extern int func1();
}
private static class Ccf_64
{
[DllImport(myDllName64)]
public static extern int func1();
}
Я должен сделать это, потому что myDllName32
и myDllName64
должны быть постоянными, и я не нашел способа установить его во время выполнения.
Есть ли у кого-нибудь элегантное решение для этого, чтобы я мог избавиться от дублирования кода и постоянной проверки размера IntPtr
.
Если бы я мог установить имя файла, мне пришлось бы проверять только один раз, и я мог бы избавиться от тонны повторяющегося кода.