草庐IT

c++ - 在构建链接到静态库的动态库时,我可以导出静态库的函数吗?

在win32上,我构建了一个名为的动态库A.dll它链接到一个名为的静态库B.lib,还构建了一个名为的可执行文件C.exe其中只有依赖A.dll.但是现在,在C.exe如果我想使用函数foo仅在中有定义B.lib,我要链接C.exe反对B.lib再次。问题是我可以导出吗?foo来自B.lib直接进入A.dll建时A.dll,如何?我也想知道在处理GCC时会发生什么。 最佳答案 一个函数foo可以从DLL导出,前提是:-您声明foo与__declspec(dllexport)属性当你将函数编译成目标文件,比如foo.obj您的链接f

C++ 使用 makefile 链接到库(newbe)

我正在尝试了解如何在我的C++项目中使用非标准库。我有几个问题。假设我想使用POCO库。所以我下载了它并使用make(静态构建)构建它。现在我有一堆.o文件和.h文件。不同目录下有一个Path.h文件和一个Path.o文件。现在我想在我的代码中使用这个模块。所以我使用#include"Poco/Path.h"包含文件。我是否必须修改makefile并将Path.o添加到我的目标?当我使用标准库时会发生什么?那些只在头文件中可用吗?我知道模板代码不能预编译。剩下的呢? 最佳答案 除了.h和.o文件,您可能还会有一个或多个libXXX.

c++ - Eclipse 无法链接到 kernel32.lib

我已经安装了EclipseCDT,因此我将能够编写和编译C代码。编译进度失败,出现如下错误:LNK1104:cannotopenfilekernel32.lib我一直在我的电脑中搜索这个文件,发现它出现在一些文件夹中,C:\ProgramFiles\MicrosoftSDKs\Windows\v7.0A\LibC:\ProgramFiles\MicrosoftSDKs\Windows\v6.0A\Lib我如何“引用”eclipse到特定路径之一,以便找到kernel32.lib文件,我将能够编译和运行C文件?编辑感谢@mux的回答LNK1104:cannotopenfilekernel

c++ - 将 Objective-C 应用程序链接到 C++ 静态库

我正在尝试使用Xcode构建一个链接到静态C++库的Objective-C桌面应用程序。我正在使用Apple的clang编译器。我收到以下链接器错误:Appleclangversion3.0(tags/Apple/clang-211.12)(basedonLLVM3.0svn)Target:x86_64-apple-darwin11.2.0Threadmodel:posix"/Developer/usr/bin/ld"-demangle-dynamic-archx86_64-macosx_version_min10.7.0-syslibroot/Developer/SDKs/MacOS

c++ - 如何将标准库静态链接到我的 C++ 程序?

我正在使用带有GNUGCC编译器的Code::BlocksIDE(v13.12)。我想让链接器为我的程序链接所需运行时库的静态版本,我该怎么做?我已经知道我的可执行文件大小会增加,你能告诉我其他的缺点吗?在VisualC++Express中这样做怎么样? 最佳答案 由于还没有其他人提出答案,我会尝试一下。不幸的是,我不知道Code::BlocksIDE,所以我的回答只是部分的。1如何使用GCC创建静态链接的可执行文件这不是特定于IDE的,但通常适用于GCC(和许多其他编译器)。假设您在main.cpp中有一个简单的“hello,wo

java - Android native 库从 aar 链接到另一个 native 库

我有一个奇怪的问题。我有一个aar库,它包含并使用native.so库。现在,我想编写另一个库,它依赖于该库,并且还具有依赖于第一个库中的native库的native部分。依赖库使用第一个库中的native代码和java包装器。我想知道,有什么办法可以通过标准的gradle依赖项(使用从第一个库复制的头文件)来做到这一点?还是直接从源代码构建第二个库?为什么我需要这个:我们有一个具有基本功能的多平台库,适用于android作为aar。这个库可以在标准的Android应用程序中使用,我们在没有其他原生代码的多个项目中使用它。但在一个应用中,我们希望根据该库编写多平台共享应用代码,我希望将

c++ - 我可以将使用 v120_xp 工具集构建的静态库链接到使用 VS2013 中的 v120 工具集构建的 EXE/DLL 吗?

我正在处理一个包含四组nativeC++VS2013项目的大型代码库。我将这些集合称为A、B、C和D。集合A和B中的项目生成C++静态库(.lib)。集合C和D中的项目生成DLL和可执行文件。集合C中的项目仅链接到集合A中的静态库,而集合D中的项目链接到集合A和集合B中的静态库:C(.dll,.exe)---->A(.lib)^||D(.dll,.exe)----->B(.lib)我有以下要求:由C组中的项目生成的那些DLL和EXE必须在WindowsXP和Windows7上运行;另一方面,由D组中的项目生成的那些DLL和EXE,做不需要在WindowsXP上运行。我想做的是使用v12

c++ - 静态链接到 Qt 时加载 Qt 插件?

我正在尝试在QIcons中使用SVG图形。我有一个包含我所有图形资源的静态库,以及该静态库中的一个方法,该方法返回预加载了正确图形的QIcons。我正在尝试这样做:QIconicon(":/icons/find.svg");我已通过使用QDir列出资源来验证资源已加载:qDebug()但是,没有显示SVG图标。当我将图标加载代码更改为:QIconicon(":/icons/find.png");一切正常。问题似乎是从未加载SVG插件。我可以获得支持的图像类型列表,其中包含:("bmp","pbm","pgm","png","ppm","xbm","xpm")但没有提到SVG。我已确保我

c++ - 为什么我需要将 lib 文件链接到我的项目?

我正在创建一个使用DLL的项目。要构建我的项目,我需要包含一个头文件和一个lib文件。为什么我需要包含相应的lib文件?头文件不应该声明所有需要的信息,然后在运行时加载任何需要的库/dll吗?谢谢 最佳答案 在许多其他语言中,头文件的等价物就是您所需要的。但是Windows上常见的C链接器一直使用导入库,C++链接器也紧随其后,现在可能已经来不及改变了。作为一个思想实验,可以想象这样的语法:__declspec(dllimport,"kernel32")void__stdcallSleep(DWORDdwMilliseconds);

c++ - ATLAS gemm 将 undefined reference 链接到 'cblas_sgemm'

这是我第一次尝试使用ATLAS。我无法正确链接它。这是一个非常简单的sgemm程序:...#includeconstintM=10;constintN=8;constintK=5;intmain(){float*A=newfloat[M*K];float*B=newfloat[K*N];float*C=newfloat[M*N];//InitializeAandBcblas_sgemm(CblasRowMajor,CblasNoTrans,CblasNoTrans,M,N,K,1.0,A,K,B,N,0.0,C,N);...}当我在带有标准ATLAS安装的linux平台上编译它时,出现