|
|
1
170
myclass。英语字母表的第8个字母
myclass.cc
class_user.cc
在Mac OS X上,使用以下命令编译:
在Linux上,使用以下命令编译:
如果这是一个插件系统,您将使用MyClass作为基类,并定义所有必需的函数virtual。然后,插件作者将从MyClass派生,覆盖虚值并实现
|
|
|
2
55
下面显示了一个共享类库的示例。[h,cpp]和使用该库的main.cpp模块。这是一个非常简单的例子,makefile可以做得更好。但它确实有效,可能对你有所帮助: shared.h定义了类:
shared.cpp定义了getx/setx函数:
main.cpp使用该类,
以及生成libshared.so并将main与共享库链接的makefile:
要实际运行'main'并链接libshared.so,您可能需要指定加载路径(或将其放在/usr/local/lib或类似目录中)。 下面指定当前目录作为库的搜索路径,并运行main(bash语法):
要查看程序是否与libshared链接,您可以尝试ldd:
在我的机器上打印:
|
|
|
3
9
除了之前的答案,我想提高人们对你应该使用 RAII (Resource Acquisition Is Initialisation) idiom 为了确保处理器销毁的安全。 以下是一个完整的工作示例:
接口声明:
共享库内容:
动态共享库处理程序:
客户代码:
注:
两篇清晰的文章以获取更多细节: |
|
|
4
7
基本上,您应该在要在共享库中使用类的代码中包含类的头文件。然后,当你链接时, use the '-l' flag 将您的代码与共享库链接。当然,这需要.so才能在操作系统中找到它。请参阅 3.5. Installing and Using a Shared Library 当您在编译时不知道要使用哪个库时,可以使用dlsym。这听起来不像是这里的情况。也许令人困惑的是,无论是在编译时还是在运行时(使用类似的方法)进行链接,Windows都会调用动态加载的库?如果是这样,那么您可以将dlsym视为LoadLibrary的等价物。 如果你真的需要动态加载库(即它们是插件),那么 this FAQ 应该有所帮助。 |
|
AstralHex · 矩阵乘法代码工作不正常 9 月前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 9 月前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 9 月前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 9 月前 |