У меня есть смесь неуправляемого кода (backend) и управляемого кода (front end), поэтому мне нужно будет вызывать неуправляемый код из моего управляемого кода, используя методы взаимодействия и атрибут DllImport
.
Теперь я скомпилировал две версии неуправляемого кода для 32- и 64-разрядных ОС; они названы service32.dll
и service64.dll
соответственно. Итак, в моем .Net коде, я должен был бы сделать DllImport
для обеих библиотек:
[DllImport(@"service32.dll")] //for 32 bit OS invocation
public static void SimpleFunction();
[DllImport(@"service64.dll")] //for 64 bit OS invocation
public static void SimpleFunction();
И вызывайте их в зависимости от платформы, на которой запущено мое приложение.
Проблема теперь в том, что для каждой неуправляемой функции я должен объявить ее дважды, одну для 32-битной ОС и одну для 64-битной ОС. Это дублирование работы, и каждый раз, когда я меняю сигнатуру неуправляемой функции, мне приходится изменять ее в двух местах.
В любом случае, можно ли изменить аргумент в DllImport
, чтобы в зависимости от платформы автоматически вызывался правильный dll?