Problem 1:
Is there a way to explicitly load the library at runtime, and not at compile time in C ++ / CLI. I am currently using .NET "Add Link" at compile time. I would like to explicitly load a managed dll. Is there a .NET equivalent of LoadLibrary?
Update: Thanks Randolpho
Assembly :: LoadFrom example from MSDN
Assembly^ SampleAssembly; SampleAssembly = Assembly::LoadFrom( "c:\\Sample.Assembly.dll" ); // Obtain a reference to a method known to exist in assembly. MethodInfo^ Method = SampleAssembly->GetTypes()[ 0 ]->GetMethod( "Method1" ); // Obtain a reference to the parameters collection of the MethodInfo instance. array<ParameterInfo^>^ Params = Method->GetParameters(); // Display information about method parameters. // Param = sParam1 // Type = System::String // Position = 0 // Optional=False for each ( ParameterInfo^ Param in Params ) { Console::WriteLine( "Param= {0}", Param->Name ); Console::WriteLine( " Type= {0}", Param->ParameterType ); Console::WriteLine( " Position= {0}", Param->Position ); Console::WriteLine( " Optional= {0}", Param->IsOptional ); }
Problem 2:
If Assembly :: LoadFrom is the equivalent of a .NET LoadLibrary. What is equivalent to GetProcAddress? How to create FunctionPointers for methods?
Update: MethodBase.Invoke from MSDN
using namespace System; using namespace System::Reflection; public ref class MagicClass { private: int magicBaseValue; public: MagicClass() { magicBaseValue = 9; } int ItsMagic(int preMagic) { return preMagic * magicBaseValue; } }; public ref class TestMethodInfo { public: static void Main() {
user295190
source share