是否可以像Windows中的DLL一样以可移植的方式使用共享对象文件?
我想知道是否有一种方法可以为Linux提供一个可以使用的编译库.以同样的方式,您可以在Windows中编译DLL,它可以在任何其他Windows上使用(好吧,不是任何其他Windows,但在大多数情况下它可以).
这可能在Linux中吗?
编辑:
我刚刚醒来并阅读答案.有一些非常好的.
我不是想隐藏源代码.我只是想提供一个已经编译并且可以使用的库,因此没有编译经验的用户不需要自己动手.
因此,我们的想法是提供一个可以在尽可能多的不同Linux上运行的.so文件.
该库是用C++编写的,使用STL和Boost库.
是否可以将图像存储在Flash中的SharedObject中?如果能起作用会很好.我需要在本地"存储"图像,但似乎Flash不支持...所以我想将这些图像放在可以保存的SharedObject中......但它是否适用于图像?
我尝试使用Bitmap,但如果我想阅读并将其添加到舞台上,则表示Object无法转换为Bitmap ...
var image:Bitmap = //some awesome image;
sharedObject = SharedObject.getLocal("img");
sharedObject.data.img = image;
sharedObject.flush();
Run Code Online (Sandbox Code Playgroud)
错误在这里 - >
sharedObject = SharedObject.getLocal("img");
addChild(Bitmap(sharedObject.data.img));
Run Code Online (Sandbox Code Playgroud) 我正在创建一个共享对象库,它将与我的程序LD_PRELOADed.在该共享库中,我还想使用程序中的一些变量.声明这些变量的方式是什么?请注意,共享对象库是与我的程序分开编译的.
现在我有3个共享对象,A.so,B.so,C.so
A.c
void libA()
{
common();
}
B.c
void common()
{
printf("COME HERE B\n");
}
C.c
void common()
{
printf("COME HERE C\n");
}
(just ingore the .h files)
test.c
int main()
{
libA();
return 1;
}
complie:
gcc -fPIC -shared libB.so libB.c
gcc -fPIC -shared libA.so libA.c ./libB.so
gcc -o test test.c libC.so libA.so
Run Code Online (Sandbox Code Playgroud)
我希望结果是"来这里B",我可以用dlopen用RTLD_DEEPBIND标志,
但它的成本太多时间从隐式调用函数改变成显式调用在我的项目.
反正有没有解决这个问题?
gcc -Wl,-Bsymbolic 在此解决方案中不起作用.
好吧,如果Ac包含普通的实现.它确实有效.
我SharedObject在游戏中使用s来存储玩家在游戏中的进度(等级分数,未锁定等级等).
一切都运行正常,但问题是当我提交游戏更新(具有相同的证书和相同的名称.swf和.ipa文件)时,游戏更新时旧的SharedObject被删除,这对于游戏来说是一个非常大的问题.为了我.
这两个版本的游戏都是使用Flash CS 6和Air SDK 3.5制作的.
知道为什么SharedObject删除了,我怎么能防止这种情况?
我是Lua的新手,我一直在努力尝试在我正在整合的游戏引擎中实现逻辑的Lua脚本.到目前为止,我已经毫无困难地让Lua启动并运行引擎,我可以从Lua调用C和C函数中的Lua函数.
引擎现在的工作方式,每个Object类都包含一组变量,引擎可以快速迭代这些变量来绘制或处理物理.虽然游戏对象都需要访问和操作这些变量,以便游戏引擎自己看到任何变化,但他们可以自由创建自己的变量,Lua对此非常灵活,所以我不会预见到任何问题.
无论如何,目前游戏引擎方面的东西都坐在C盘中,我真的希望它们留在那里以达到性能的原因.因此,在一个理想的世界中,当产生一个新的游戏对象时,我需要能够让Lua对这个标准变量集的读/写访问权作为Lua对象基类的一部分,然后它的游戏逻辑可以继续狂奔.
到目前为止,我保留了两个独立的对象表--Laa生成了一个新的游戏对象,它将自己添加到一个数字索引的全局对象表中,然后继续调用一个C++函数,它创建一个新的GameObject类和在类中注册Lua索引(一个int).到目前为止,C++函数现在可以看到Lua对象并使用dostring在Lua land中轻松执行操作或调用函数.
我现在需要做的是将C++变量作为GameObject类的一部分,并将它们暴露给Lua,这就是谷歌让我失望的地方.我在这里遇到了一个非常好的方法,它使用标签详细说明了这个过程,但是我已经读过这个方法已被弃用,而不是metatables.
实现这一目标的理想方法是什么?是否值得学习如何使用libBind或一些等效方法传递类定义的麻烦,还是有一种简单的方法我可以用全局lua对象注册每个变量(一次,在产生时)?从Lua 5.1.4开始,"当前"最好的方法是什么?
我正在使用此方法将共享对象保存在特定位置,但我无法提供路径
SharedObject.getLocal("save","how to give path here for window");
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误
Error: Error #2130: Unable to flush SharedObject.
at Error$/throwError()
at flash.net::SharedObject/flush()
at OnlineDiagramEditor/SaveData_mouseDownHandler()[C:\Users\ruchidod\Adobe Flash Builder 4.6\OnlineDiagramEditor\src\OnlineDiagramEditor.mxml:3240]
at OnlineDiagramEditor/__SaveData_mouseDown()[C:\Users\ruchidod\Adobe Flash Builder 4.6\OnlineDiagramEditor\src\OnlineDiagramEditor.mxml:3522]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:13152]
at mx.managers::SystemManager/mouseEventHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\SystemManager.as:2918]
Run Code Online (Sandbox Code Playgroud)
有时它给
Error: Error #2134: Cannot create SharedObject.
at flash.net::SharedObject$/getLocal()
at OnlineDiagramEditor/SaveData_mouseDownHandler()[C:\Users\ruchidod\Adobe Flash Builder 4.6\OnlineDiagramEditor\src\OnlineDiagramEditor.mxml:3236]
at OnlineDiagramEditor/__SaveData_mouseDown()[C:\Users\ruchidod\Adobe Flash Builder 4.6\OnlineDiagramEditor\src\OnlineDiagramEditor.mxml:3522]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:13152]
at mx.managers::SystemManager/mouseEventHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\SystemManager.as:2918]
Run Code Online (Sandbox Code Playgroud) 给出的
ls -lrt /usr/lib/libvpx*结果
lrwxrwxrwx 1 root root 2012年2月9日15日 /usr/lib/libvpx.so.1.0 ->libvpx.so.1.0.0
lrwxrwxrwx 1 root root 2012年2月9日15日 /usr/lib/libvpx.so.1 -> libvpx.so .1.0.0
-rw-r--r-- 1 root root 646120 2012 年 2 月 9 日 /usr/lib/libvpx.so.1.0.0
ls -lrt /usr/lib/libschroedinger*结果
lrwxrwxrwx 1 root root 29 Feb 8 2012 /usr/lib/libschroedinger-1.0.so.0 ->libschroedinger-1.0.so.0.11.0
-rw-r--r-- 1 root root 774044 Feb 8 2012 /usr/ lib/libschroedinger-1.0.so.0.11.0
ls -lrt /usr/lib/libgsm*结果
lrwxrwxrwx 1 root root 16 Nov 5 2009 /usr/lib/libgsm.so.1 -> libgsm.so.1.0.12
-rw-r--r-- 1 root root 50680 Nov 5 2009 …
cmake shared-libraries dynamic-linking shared-objects gstreamer
在Linux中是否有一个命令可以在/ usr/lib中的已编译共享对象(.so)上运行并知道它是为64位还是32位系统编译的?(我的意思是要知道ELF类,比如ELFCLASS32)
假设您有一个使用dlopen()加载多个共享对象/动态库的程序.给定一个指向全局对象的指针(例如静态成员变量),是否可以确定指针是在哪个库的边界中分配的?