我知道使用SharedObject存储字符串和数字是一件简单的事情,我也熟悉这种事情:
var sharedObject:SharedObject = SharedObject.getLocal("userData");
var obj:Object = new Object();
obj.prop = "value";
sharedObject.data.userobj= obj;
sharedObject.flush();
Run Code Online (Sandbox Code Playgroud)
但是,我正在尝试存储GameStage类的对象,这是我定义的类,用于保存游戏中各阶段的数据.这种类型的东西似乎不起作用:
var sharedObject:SharedObject = SharedObject.getLocal("userData");
var stageOne:GameStage = new GameStage();
stageOne.highScore = 99999;
sharedObject.data.stageOne = stageOne;
sharedObject.flush();
Run Code Online (Sandbox Code Playgroud)
此代码不会引发错误,但是当我尝试稍后检索阶段数据时,如下所示:
stageOne = sharedObject.data.stageOne;
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
TypeError: Error #1034: Type Coercion failed: cannot convert Object@3d220629 to GameStage.
Run Code Online (Sandbox Code Playgroud)
我想我的问题是:究竟什么类型的数据类型可以存储在SharedObject中?我在网上看到的所有地方都回答了"可以在Flash中使用的任何东西"的问题,这不是很具描述性 - 显然我的GameStage类也适用于Flash.有什么关于从SharedObject中检索我不知道的数据吗?
我的预测是我无法以这种方式存储我的舞台数据.如果是这种情况,有人可以建议另一种方法来保存数据吗?
基本上我想以独立于平台的方式在共享对象中查找函数:我不想处理LoadLibrary/GetProcAddress或dlopen细节.
是否有一个库隐藏了在各种操作系统上的共享对象中查找函数指针的过程?我想简单地提供共享对象/ DLL名称和函数名称,并获取一个C函数指针来调用该函数.
我有以下结构将用于保存插件信息.我很确定这会随着时间的推移而改变(最可能添加).假设这个文件将被修复,这里有什么比我做的更好吗?
struct PluginInfo
{
public:
std::string s_Author;
std::string s_Process;
std::string s_ReleaseDate;
//And so on...
struct PluginVersion
{
public:
std::string s_MajorVersion;
std::string s_MinorVersion;
//And so on...
};
PluginVersion o_Version;
//For things we aren't prepared for yet.
void* p_Future;
};
Run Code Online (Sandbox Code Playgroud)
此外,在为此系统构建共享对象时,是否应采取任何预防措施.我的预感是我会遇到很多库兼容性问题.请帮忙.谢谢
我有一个任务,我在一个线程中等待连接并将它们转发到另一个线程.也许我有些误解,但为什么我不能在主线程中重新打开文件描述符?
非常简化的代码:
sub inthread {
$socket = new IO::Socket::INET ( ... );
# ...
while ( my $client = $socket->accept() ) {
#if i print STDOUT, (fileno $client); # there i'll get 4
push ( @shared, fileno $client);
}
}
sub mainthread {
if ( scalar @shared ) {
$fd = shift @shared;
# if i print (fileno $fd); # there i'll get 4
open my $f, "<&=$fd" or die " error $!"; ### error here: Can't open 4: Bad …Run Code Online (Sandbox Code Playgroud) 如何从ldd可执行文件的输出中复制所有共享对象?
我正在寻找类似的东西,但这是为了find并且我需要ldd:
find -name "*python3.7*" -exec cp "{}" /home/user/python/arm-linux-gnueabihf/ \;
Run Code Online (Sandbox Code Playgroud)
编辑:
输出示例ldd:
adrian@adrian:~/Dokumenty/PracaMagisterska/eclipse/0_FULL_GAME$ ldd 0_FULL_GAME
linux-vdso.so.1 (0x00007ffcc15fc000)
libsfml-window.so.2.5 => /usr/lib/x86_64-linux-gnu/libsfml-window.so.2.5 (0x00007ff1f8d57000)
libpython3.8.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0 (0x00007ff1f8809000)
libsfml-system.so.2.5 => /usr/lib/x86_64-linux-gnu/libsfml-system.so.2.5 (0x00007ff1f87fb000)
libsfml-graphics.so.2.5 => /usr/lib/x86_64-linux-gnu/libsfml-graphics.so.2.5 (0x00007ff1f87a3000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff1f85c2000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff1f8473000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff1f8456000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff1f8264000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007ff1f8127000)
libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007ff1f811a000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007ff1f8092000)
libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007ff1f8066000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007ff1f8036000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 …Run Code Online (Sandbox Code Playgroud) 在Windows下,我们有一个C接口(extern"C"{// interface})到我们的C++库,它使用模块定义文件(.def)导出未编码的函数.
我试图在linux下重新创建相同的东西,我相对缺乏经验.据我所知,在NIX系统下,默认情况下会导出所有函数.考虑到这一点,我创建了一个共享对象,我通过nm命令运行.
我很惊讶地看到,与Windows不同,我的功能名称已被破坏!
我该怎么办呢?
我从一个示例中的类创建一个共享库,我在这里获得了Linux上的C ++动态共享库。我想从创建的共享库中调用另一个共享库,然后在主程序中使用它。因此,我有myclass.so库,我想从myclass.so库中调用另一个库,例如anotherclass.so,然后在主程序中使用此myclass.so库。请问我如何做到这一点。
当我需要使用 Adobe AIR 应用程序读取 Flash Player 的 .sol 时,我遇到了共享对象文件的问题。
Flash Player共享对象的路径是:
C:/Users/%username%/AppData/Roaming/Macromedia/Flash Player/#SharedObjects/%randomnumber%/localhost/
Run Code Online (Sandbox Code Playgroud)
但是,Adobe AIR共享对象的路径是:
C:/Users/%username%/AppData/Roaming/%applicationname%/Local Store/#SharedObjects/#localhost/
Run Code Online (Sandbox Code Playgroud)
如何使用 Adobe AIR 应用程序读取 Flash Player 共享对象?
我试过:
FileStream打开文件,但是不起作用。.solreadObject.sol到 Adobe AIR 共享对象路径并使用 读取SharedObject,但Error #2134: Cannot create SharedObject发生了这种情况。我能做什么来解决这个问题?