dlopen原型: void * dlopen(const char * filename,int flag);
我需要的是: void * dlopen(const char * pBufferWithSoContents,int flag);
我不想将library.so存储在文件系统中。我想将它存储在内存缓冲区中,而不是存储在文件系统中。有人知道我可以使用的任何解决方案吗?
答案 0 :(得分:0)
void *dlopen(const char *pBufferWithSoContents, int size, int flag) {
FILE* handle = fopen("lib.tmp", "w");
fwrite(pBufferWithSoContents, sizeof(char), size, handle);
fclose(handle);
void * ptr = dlopen("lib.tmp", flag);
remove("lib.tmp"); // Tmp file delete it.
return ptr;
}
我必须承认没有经过测试但基本上创建了一个tmp文件。你说它在内存中而不是在硬盘中暂时将它保存在磁盘上,使用dlopen posix调用加载它并只删除临时文件。