Objective c 在库中引用代码是否有常规URI方案?

Objective c 在库中引用代码是否有常规URI方案?,objective-c,dll,shared-libraries,uri,uri-scheme,Objective C,Dll,Shared Libraries,Uri,Uri Scheme,是否有一个标准的或常规的URI方案,比如文件:或http:来引用动态库中的对象 例如,如果我要以唯一字符串的形式表示库中的函数,该字符串可用于查找该函数(通过任何反射方式),我该如何做 具体地说,我是在Objective-C中开发的,我假设不同的语言/平台将有不同的表示形式(我知道.NET有自己的表示形式),但我想从更一般的意义上了解这一点。不,符号的名称是从代码中的名称派生出来的。在windows中,您将假定为C或C++ HMODULE module=LoadLibrary( [path to

是否有一个标准的或常规的URI方案,比如
文件:
http:
来引用动态库中的对象

例如,如果我要以唯一字符串的形式表示库中的函数,该字符串可用于查找该函数(通过任何反射方式),我该如何做


具体地说,我是在Objective-C中开发的,我假设不同的语言/平台将有不同的表示形式(我知道.NET有自己的表示形式),但我想从更一般的意义上了解这一点。

不,符号的名称是从代码中的名称派生出来的。在windows中,您将假定为C或C++

HMODULE module=LoadLibrary( [path to your dll] );
//If the exported name is foo.
Function foo=(Function)GetProcAddress(module,"foo");
//Call function
foo();
FreeLibrary(module);
导出的名称依赖于编译器

实际上,这样的命名方案是毫无用处的。在C++中,你可以使用类似的(注意,每个函数原型都有一个函数调用方)

FunctionCaller的构造函数加载库,调用foo并释放库。但这并不好,因为:

  • 可能会发生这样的情况:返回值指向库中的资源,然后将变得无用

  • 与调用找到的函数相比,加载库和执行函数查找速度较慢

你所做的是

  • 加载库

  • 加载您需要的函数

  • 使用你的功能

  • 解放图书馆

  • 在这里,您需要一次引用多个符号,这将需要比uri更复杂的方案

    编辑:如果您想方便调用这样的函数,您可以拥有一个幸存的FunctionCaller对象,该对象保留所有加载的模块,并包含从函数名到每个加载库地址的映射

    FunctionCaller("your-dll.dll/foo")();