Этот вопрос связан с моим предыдущим вопросом - dynamically running a DLL at a remote Windows box? Прежде всего, спасибо за все ваши полезные советы.Динамическое связывание функции DLL с неизвестными типами и параметрами возврата
Я нашел способ запуска DLL на удаленном компьютере.
Теперь я пытаюсь сделать следующее.
(1) отправить DLL на удаленный компьютер.
(2) отправьте команду на удаленную машину для запуска функции в DLL.
Команда может содержать такие элементы, как (a) параметры местоположения (3) точки входа в DLL (3).
Проблема в том, что ... в данной DLL могут быть только функции с различными типами возвращаемого значения и параметрами.
Есть ли у вас какие-либо предложения о том, как я могу эффективно связать функцию DLL с неизвестными типами возвращаемых данных и неизвестными параметрами? Должен ли я просто ограничить какие функции удаленной машины можно запустить?
Вот мой фрагмент кода в C# ...
[DllImport("kernel32")]
public extern static IntPtr LoadLibrary(string dllToLoad);
[DllImport("kernel32")]
public extern static Boolean FreeLibrary(IntPtr hModule);
[DllImport("kernel32")]
public extern static IntPtr GetProcAddress(IntPtr hModule, string procedureName);
// THIS IS THE PART THAT I HAVE A PROBLEM WITH.
// Since I want to bind MyFunction to just about any function in a DLL, I sure cannot declare the following as something like "double".
// Also there could just be any combinations of parameters (e.g. int, string, double..)
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate double MyFunction(int arg);