标签: shared-objects

链接无法找到符号,但读取库并存在符号

我一直在努力编译我的项目而且我遇到了undefined reference错误.例如.:

installertest.cpp:(.text+0x9d1): undefined reference to `XmlRpcValue::makeArray()'
...
installertest.cpp:(.text+0xede): undefined reference to `dbcancel'
installertest.cpp:(.text+0xefd): undefined reference to `dbfcmd'
installertest.cpp:(.text+0xf0f): undefined reference to `dbsqlexec'
installertest.cpp:(.text+0xf2d): undefined reference to `SHA1_Init'
...
Run Code Online (Sandbox Code Playgroud)

我的命令行是:

g++ -o installertest \
    -lsybdb \
    -lxmlrpc \
    -lxmlrpc_cpp \
    -lxmlrpc_xmlparse \
    -lxmlrpc_xmltok \
    -lxmlrpc_util \
    -lxmlrpc++ \
    -lxmlrpc_server_cgi \
    -lssl \
    -std=c++0x \
    ContractData.o installertest.o
Run Code Online (Sandbox Code Playgroud)

objdump -T显示符号位于.so文件中.例如.:

libsybdb.so:
...
0000000000011c30 g    DF .text  0000000000000083  Base        dbcancel
...

/usr/lib/libxmlrpc_cpp.so:
...
0000000000002e78 g    DF .text  0000000000000092  Base        _ZN11XmlRpcValue9makeArrayEv …
Run Code Online (Sandbox Code Playgroud)

linux g++ ld shared-objects

6
推荐指数
1
解决办法
4023
查看次数

如何在IntelliJ中添加多个本机库(.so)文件

我有两个第三方本地库,说libfoo.solibbar.so.我很难加载这两个库.我已将它们复制到libs适当的CPU arch(armeabi,mips和x86)下的文件夹中,并将Project结构>模块> Android> Structurelibs下的Native 目录设置为指向此libs文件夹.我只能加载一个库而不能加载另一个库.如果我尝试一次加载一个(删除其他库),它运行正常.我得到的例外是:

java.lang.UnsatisfiedLinkError: Couldn't load foo from loader dalvik.system.PathClassLoader 
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能让IntelliJ或Android运行时找到这两个本地库?

android intellij-idea shared-objects android-ndk

6
推荐指数
1
解决办法
2433
查看次数

如何使用.so文件运行c程序

我已经浏览了stackoverflow上的所有解决方案以及询问ubuntu.

我有一个去计划

package main

import "C"

//export Getint
func Getint() int {
        return  2
}

func main() {}
Run Code Online (Sandbox Code Playgroud)

我已生成.so文件,名称为t.so和头文件th

现在我想在我的C程序中使用这个功能.我编写了代码,但我不知道如何执行它.

#include <stdio.h>
#include <t.h>
int main()
{
int a;
a=Getint();
printf("number : %d",a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我执行它时

gcc c.c t.so
Run Code Online (Sandbox Code Playgroud)

它会生成一个.out文件

但是在使用./a.out运行a.out时它会出错

./a.out
Error while loading shared libraries: t.so: can not open shared object file: no such file or directory exists.
Run Code Online (Sandbox Code Playgroud)

然后我尝试了

gcc -c c.c -l t.so
Run Code Online (Sandbox Code Playgroud)

所以它生成co文件,它不可执行.

c gcc shared-libraries shared-objects go

6
推荐指数
2
解决办法
2万
查看次数

如何在 UML 中表示共享对象?

为了设计我的代码,我正在绘制一些 UML 类图。我有一些共享对象,我想知道应该如何绘制这些对象,因为这些对象的所有权确实是共享的。更具体地说,这里是正在发生的事情的 C++ 示例:

class A
{
public:
  A(){
    std::shared_ptr<CSharedObj> sharedObj = std::make_shared<CSharedObj>;
    mB = B(sharedObj);
  }
private:
  B mB;
};

class B
{
public:
  B(std::shared_ptr<CSharedObj>);
private:
  std::shared_ptr<CSharedObj> mSharedObj;
};

class CSharedObj
{
public:
  CSharedObj();
};
Run Code Online (Sandbox Code Playgroud)

我如何在类图中表示这 3 个类之间的关系?

uml class-diagram object shared-objects shared-ptr

6
推荐指数
1
解决办法
2359
查看次数

5
推荐指数
3
解决办法
2845
查看次数

当用户更新应用程序时,共享对象数据是否会消失?

我正在使用Flash和AS3为iOS和Android编写应用程序,我正在使用共享对象保存XML数据.现在让我感到震惊的是,当我向应用程序商店提供更新并且用户更新应用程序时,共享对象是保持原样还是会被替换?我非常希望他们保持原样.如果它导致问题,它如何工作以及应该怎么做?

谢谢

flash actionscript-3 shared-objects

5
推荐指数
1
解决办法
907
查看次数

从内存加载.so文件

可能重复:
从内存中删除?

我已经看到这个用于Windows的DLL文件,从内存缓冲区加载,但我无法在Linux的任何地方找到它,而"ld"源代码是我见过的最复杂的代码.所以:

有没有从内存中加载.so文件的例子?即便是一个我能完成的简单的?我只是不知道从哪里开始,即使我已经阅读了大部分的ELF规格,但它对我来说仍然是神秘的.

c linux shared-objects

5
推荐指数
1
解决办法
3709
查看次数

无法在 R 中加载任何包(无法加载共享对象)

过去 2 年我一直在使用 R。我昨天试图启动该程序以运行我的脚本之一,但我使用的包未能加载。我不确定发生了什么,因为它之前工作正常。我试图卸载并重新安装该软件,但没有任何帮助。这是我在 require()/library() 包(例如 ggplot2)时遇到的错误:

>require(ggplot2)
Loading required package: ggplot2
Error in inDL(x, as.logical(local), as.logical(now), ...) : 
  unable to load shared object '//mypath/myuser/data/Documents/R/win-library/3.2/digest/libs/x64/digest.dll':
  LoadLibrary failure:  Access is denied.

>library(ggplot2)
Error in inDL(x, as.logical(local), as.logical(now), ...) : 
      unable to load shared object '//mypath/myuser/data/Documents/R/win-library/3.2/digest/libs/x64/digest.dll':
      LoadLibrary failure:  Access is denied.
Run Code Online (Sandbox Code Playgroud)

我发现很多人在不同的网站上问同样的问题,但他们的主要问题是特定的包。我对所有包裹都遇到了这个问题。有什么想法可以解决这个问题吗?非常感激。

error-handling dll r package shared-objects

5
推荐指数
1
解决办法
2万
查看次数

dlopen'ing 时是否运行静态初始化(和/或其他)代码?

当您dlopen()是共享对象时,是否有一种机制可以让该 DLL 中的代码在不被显式调用的情况下执行?具体来说,调用者dlopen()可能不知道的全局变量/静态变量的 C++ 静态初始化代码?我很确定答案应该是“是”,但我不记得是什么机制导致这种情况发生,以及如何利用它来运行任意代码。

c++ shared-objects dynamic-loading dlopen static-initialization

5
推荐指数
1
解决办法
710
查看次数

dyn.load(dllfile) 中的错误:无法加载共享对象 | 预期在:平面命名空间

我是 R 包开发的新手。我正在开发一个包 (bartpkg),它的src/文件夹中有一个 (prime) cpp 文件和一些辅助 cpp ( X.Cpp, Y.Cpp) 和一个 c 文件 ( Z.C) 及其头文件 ( X.h, Y.hand Z.h)

在 Rstudio 中执行“构建和重新加载”时出现以下错误。

Error in dyn.load(dllfile) :
  unable to load shared object '/Users/abcd/BART/bart_pkg1/src/bartpkg.so':
  dlopen(/Users/abcd/BART/bart_pkg1/src/bartpkg.so, 6): Symbol not found: __ZN3RNG4nfixElm
  Referenced from: /Users/abcd/BART/bart_pkg1/src/bartpkg.so
  Expected in: flat namespace
 in /Users/abcd/BART/bart_pkg1/src/bartpkg.so
Calls: suppressPackageStartupMessages ... <Anonymous> -> load_all -> load_dll -> library.dynam2 -> dyn.load
Execution halted

Exited with status 1.
Run Code Online (Sandbox Code Playgroud)

我遵循了基本准则来构建包。

.R 文件#' @useDynLib …

r shared-objects rcpp r-package

5
推荐指数
0
解决办法
3306
查看次数