我一直在努力编译我的项目而且我遇到了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) 我有两个第三方本地库,说libfoo.so和libbar.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运行时找到这两个本地库?
我已经浏览了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文件,它不可执行.
为了设计我的代码,我正在绘制一些 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 个类之间的关系?
我正在使用Flash和AS3为iOS和Android编写应用程序,我正在使用共享对象保存XML数据.现在让我感到震惊的是,当我向应用程序商店提供更新并且用户更新应用程序时,共享对象是保持原样还是会被替换?我非常希望他们保持原样.如果它导致问题,它如何工作以及应该怎么做?
谢谢
可能重复:
从内存中删除?
我已经看到这个用于Windows的DLL文件,从内存缓冲区加载,但我无法在Linux的任何地方找到它,而"ld"源代码是我见过的最复杂的代码.所以:
有没有从内存中加载.so文件的例子?即便是一个我能完成的简单的?我只是不知道从哪里开始,即使我已经阅读了大部分的ELF规格,但它对我来说仍然是神秘的.
过去 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)
我发现很多人在不同的网站上问同样的问题,但他们的主要问题是特定的包。我对所有包裹都遇到了这个问题。有什么想法可以解决这个问题吗?非常感激。
当您dlopen()是共享对象时,是否有一种机制可以让该 DLL 中的代码在不被显式调用的情况下执行?具体来说,调用者dlopen()可能不知道的全局变量/静态变量的 C++ 静态初始化代码?我很确定答案应该是“是”,但我不记得是什么机制导致这种情况发生,以及如何利用它来运行任意代码。
c++ shared-objects dynamic-loading dlopen static-initialization
我是 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 …