我需要实现一个从.so调用函数的能力,而不需要在编译时知道函数.我将仅在运行时提供该信息.我怎样才能做到这一点?
我们可以假设我要调用的函数是从库中导出的,库侧没有什么需要做的.
编译时不知道函数签名.
操作系统是Raspberry PI上的Linux.
在我正在处理的 DLL 中,我想导出以下类:
class A {
public:
class B
{
std:string placeholder;
};
boost::shared_ptr<B> sp;
};
Run Code Online (Sandbox Code Playgroud)
与该代码我需要DLLEXPORT A,A::B和boost::shared_ptr<A::B>。boost::shared_ptr<A::B>在声明之前A::sp,我无法 dllexport (我必须在命名空间级别执行此操作),因为class A::B尚不清楚。像这样声明:
class A::B;
Run Code Online (Sandbox Code Playgroud)
不起作用。像这样声明:
class B;
Run Code Online (Sandbox Code Playgroud)
实际上声明了另一个类。我该如何解决?
我想在某些类构造函数执行之前自动执行一些代码(加载一些类需要的externall),所有这些都在C#,.NET 2.0中
编辑:
public class MyClass
{
ThisTypeFromExternalAssembly variable;
}
Run Code Online (Sandbox Code Playgroud)
而我真正需要的是将程序集加载器以某种方式"附加"到MyClass,以便在需要时加载外部组件.这必须在构造函数之前发生,但我不想Init()在构造MyClass()对象之前调用一些
我有一个像缓存一样的对象.如果需要,它可以填充整个可用内存.
我希望能够根据需要将内存恢复到操作系统.因此,如果任何其他分配出现问题,VM(或GC或其他任何人)应该在使用OutOfMemory异常失败之前让我的'缓存'缩小.
我怎么能在C#中做到这一点?