标签: shared

如何将共享库与Linux中的其他共享库链接?

我的应用程序动态加载liba.so(with dlopen).
liba.so采用libb.so所以我要链接liba.so反对libb.so.如何在Linux中执行此操作?

提前致谢.

c++ linux shared shared-libraries

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

CMake:链接共享库

我已经做过几次了,但是这次我还是被卡住了。我有一个可执行文件“ myapp”和一个自己的共享库“ mylib”。在我的cmakelist中,我有以下内容:

ADD_LIBRARY(mylib SHARED ${SOURCES_LIB})
INSTALL(TARGETS mylib DESTINATION .)
ADD_EXECUTABLE(myapp ${SOURCES_APP})
TARGET_LINK_LIBRARIES(myapp ${QT_LIBRARIES} mylib)
INSTALL(TARGETS myapp DESTINATION .)
Run Code Online (Sandbox Code Playgroud)

一切都能正确编译和链接,但是当我启动myapp时,出现以下错误:

error while loading shared libraries: libmylib.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

lib和可执行文件位于安装目录中。当我通过将以上cmakelists的第一行更改为以下内容来使我的库成为静态库时:

ADD_LIBRARY(mylib STATIC ${SOURCES_LIB})
Run Code Online (Sandbox Code Playgroud)

那么一切都会100%有效。

有人知道我在做什么错吗?

static shared cmake libraries

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

g ++共享库找不到​​与-L相同的目录

我只是看不出我在这里做错了什么:

问:在使用共享对象编译程序时,为什么g ++找不到我的库?

我试图在我的c ++程序中包含一个共享库:

g++ -fpic -c sha.cpp
g++ -shared -o libsha.so sha.o
g++ main.cpp -o main -L. -lsha
Run Code Online (Sandbox Code Playgroud)

其中sha.cpp和sha.h是库文件,main.cpp是我的程序.

我已尝试使用静态库,它可以找到:

g++ -static -c sha.cpp -o libsha.o
ar rcs libsha.a libsha.o
g++ main.cpp -o main -L. -lsha
Run Code Online (Sandbox Code Playgroud)

该平台是windows上的cygwin,这是输出:

rob@pc /cygdrive/c/src/a
$ g++ main.cpp -o shatest -L. -lsha
/usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../i686-pc-cygwin/bin/ld: cannot find -lsha
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我已阅读所有论坛帖子,但图书馆在同一个文件夹中!

$ ls
libsha.so  main.cpp  sha.cpp  sha.h  sha.o
Run Code Online (Sandbox Code Playgroud)

我这样做的原因是,在另一个平台上,正在创建一个库,当一个对象被调用时,它可以工作,但是当构建第二个对象时应用程序崩溃.我正在做上面的简单测试!(烦恼不是那么简单).

源文件如下:

main.cpp中

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include "sha.h"

void *thread_one( void …
Run Code Online (Sandbox Code Playgroud)

c++ linker shared g++ ld

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

Android 共享内部存储

在任何基于 Android 的设备上是否有共享内部存储这样的东西?我知道您可以将 SDCard 用作应用程序之间的共享文件位置,但是对于我正在处理的项目,我们不希望 SD 卡丢失(敏感材料)。

问题如下。App1 允许用户浏览(例如)一些 word 文档并将它们下载到建议的共享存储,然后用户可以将此文件传递给 Documents 2 Go 编辑它们并保存更改。然后,应用程序 1 允许上传更改后的文件。

我不喜欢将文档编辑器 word/excel 直接构建到应用程序中,除非那很容易?

编辑:

第二个应用程序是“Documents 2 Go”我将无法编辑它的 AndroidManifest

storage android shared internal

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

共享库 QT 资源

我又遇到了另一个问题。这一次,我有一个 .dll,一个包含 .qrc(QT 资源)文件的共享库,问题是,当我尝试访问库的资源之一时,它不起作用。我尝试实施:

Q_INIT_RESOURCE(resourcefilename)
Run Code Online (Sandbox Code Playgroud)

它仍然无法正常工作。(它说没有找到“qInitResources_resourcefilename()”。)

c++ resources qt shared

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

在子进程中的共享 c_wchar_p 中设置字符串的值?

我有这样的情况:

主进程生成一些子进程,他们应该将结果以字符串和数字类型写入共享对象中,对于数字类型没有问题,但对于字符串,值将丢失。

import multiprocessing as mp
from ctypes import Structure, c_double, c_wchar_p, c_int

# shared obj class
class SharedObj(Structure):
    _fields_ = [('name', c_wchar_p), ('val', c_double) ]

def run_mp( values , lock , s ) :
    for i in range( s , len( values ) , 2 ):
        lock.acquire()
        values[i].name = str( i ) # write the string value in the shared obj
        values[i].val = float( i )
        print( "tmp: %d" % i )
        lock.release()

def main():
    # creating the shared …
Run Code Online (Sandbox Code Playgroud)

python ctypes shared multiprocessing

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

如何将网络文件夹挂载到 Android 内部文件夹中?

我想将网络共享文件夹(例如:\10.0.0.240\Folder)装入 Android 内部文件夹(例如:/mnt/sdcard/MountedFolder),就像 MountManager 应用程序一样。

我的问题是:我该怎么做,或者我如何至少进入网络文件夹并直接从我的应用程序中查看其中的文件?

我正在使用 Rooted 设备,因此权限无关紧要。

networking binding android mount shared

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

内存中的共享内存或命名管道?

我想在两个不同的程序之间进行通信。一个修改过的流光溢彩程序,它输出 LED 信息和我自己的读取这些信息的程序。

我阅读了命名管道和共享内存。但对我来说,不清楚数据存储在哪里。由于我将交换大量数据,我不想每次都将这些数据写入磁盘。我正在使用树莓派,而 SD 卡应该可以使用更长的时间;)

所以基本问题是:用什么方法可以在不写入磁盘的情况下将信息交换到另一端?我不确定共享内存是否写入 ram,我想说明一下。我读到的另一个想法是 /dev/shm ,它应该是一个 ram 磁盘。我也可以在这个位置使用命名管道吗,这些信息会不会保存在 ram 中?

最好的方法是什么?谢谢 :)

c c++ memory shared pipe

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

使用 Visual Studio 存储库中的共享库

我是 Git 版本控制的新手。我只希望每个项目都有自己的存储库。

我创建

  1. RepoA 中的一个项目(共享库)
  2. RepoB 中的 B 项目(共享库)具有 A 的子树
  3. RepoC 中的 C 项目(共享库)具有 A 的子树
  4. RepoD 中的 D 项目(控制台应用程序)具有 B 和 C 的子树

文件夹结构如下。

D

-B

- 一种

-C

- 一种

如您所见,文件夹重复,并且我无法在 Visual Studio 中两次添加相同的项目。

如果我在 B 文件夹中添加 A 项目,则会发生编译错误。

元数据文件项目 C..... 'A.dll' 无法找到 因为 C 文件夹中的 A 项目从未被编译,所以缺少 A.dll。

如果C工程中的A编译一次就可以了。(通过打开C工程中的C.sln或A.sln)当然会有A.dll,

但是下次别人从git下载D项目时,他/她应该在编译D项目之前在C项目中编译C或A。

任何人都有一个很好的解决方案?

git shared repository subtree visual-studio-2015

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

Xamarin表格masterdetail隐藏后退按钮

我正在使用主要详细信息页面处理Xamarin表单共享项目.当我运行应用程序时,主详细信息页面是第一个加载的项目,它显示后退按钮,一旦点击打开导航(主)抽屉.这没有任何导航意义!我试图隐藏后退按钮但是无法做到这一点.有没有人遇到这个并成功地做到了这一点?我更喜欢一个程序化的解决方案,而不是一个xaml解决方案.

我尝试添加以下代码:

NavigationPage.SetHasBackButton(this, false);
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我想保留工具栏,因为我将在这里添加自己的菜单项,但希望后退按钮不见了.

c# shared master-detail xamarin xamarin.forms

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