-
2 votesanswersviews
C运行时静态与动态链接中的内存分配
从交换机看到的我的程序很麻烦,与新运行时的分发和安装有关 . (不知道我们在内存分配问题上避免了什么 . ) 内存分配的含义是什么?假设一个插件分配内存,exe释放它 . 静态与动态链接的c运行时之间是否存在不同的行为?如果我们使用插件,我们是否会在静态链接c运行时时遇到问题?如果我们切换回静态链接,是否会破坏内存泄漏检测和崩溃转储报告? 符合Which VC++ runtime version... -
3 votesanswersviews
动态链接错误与静态链接的boost库
我在Windows(MSVC 2012)和Boost v1.54上,我使用以下参数编译 Boost.Log (我的小项目取决于它): b2.exe link=static variant=release runtime-link=shared --with-log stage 因此,日志模块被编译并动态链接到C运行时库 . 然后我的小项目使用 CMake 来管理,我添加选项以静态链接boost:... -
3 votesanswersviews
共享库的静态加载是否像动态加载或静态链接一样链接?
根据this expert, 动态加载是指在启动后将可执行文件或库映射(或不经常复制)到进程的内存中 . 动态链接是指在编译时解析符号 - 将其名称与地址或偏移相关联 . 因此,相应地: static loading 指的是在可执行文件或库中启动之前将其映射到内存中, static linking 指的是在编译时解析符号 . 现在,当您执行库的 static loading 和 static ... -
0 votesanswersviews
是否可以静态链接动态链接的Qt?
我一直想知道是否可以同时动态和静态地链接不同的库?当我试图将Qt5(动态链接)与其他只能静态编译的库相关联时,我无法使其工作,因为这个错误和一些其他错误抱怨 msvcrtd.lib 中符号的多个定义: qtmaind.lib(qtmain_win.obj):-1: Error: LNK2038: mismatch detected for "RuntimeLibrary": v... -
0 votesanswersviews
如何链接DLL用于LoadLibrary()使用(在Windows上的C中)并从调用exe导入变量
在Windows上我有一个程序可执行文件,它是通过Windows钩子注入DLL的目标 . 钩子通过强制它执行LoadLibrary()将我的DLL注入目标的程序空间 . 我想将一个特定的变量从exe导出到DLL,以便DLL可以读取该变量的内容 . 由于这是动态链接,因此链接器不会将exe和DLL链接在一起 . 我无法构建DLL,因为我在我试图从exe导入的变量上得到链接器错误2001 - 未解析... -
356 votesanswersviews
静态链接与动态链接
在某些情况下,是否有任何令人信服的性能原因选择静态链接而不是动态链接?我已经听过或读过以下内容,但我对这个问题的了解还不足以保证它的真实性 . 1)静态链接和动态链接之间的运行时性能差异通常可以忽略不计 . 2)(1)如果使用使用配置文件数据优化程序热路径的配置文件编译器,则不成立,因为通过静态链接,编译器可以优化代码和库代码 . 通过动态链接,只需优化您的代码 . 如果大部分时间都花在运行库代码... -
2 votesanswersviews
如何在VC Windows窗体应用程序中静态链接DLL和LIB?
我能够在VC 2008中构建我的Windows窗体(32位)项目 . 当我构建一个设置并尝试在另一个系统上运行它时,它会给出错误 应用程序无法启动,因为其并排配置不正确 . 我搜索了很多解决方案,然后尝试在VC 2008可再发行组件x86上安装确切的版本 . 但问题仍然存在 . 我试图将项目的属性从动态链接更改为静态链接,但这会生成错误 “/ Mtd”和“/ clr:pure”命令行参数不正... -
91 votesanswersviews
当动态链接共享库中的全局变量和静态变量时会发生什么?
我试图理解当具有全局变量和静态变量的模块动态链接到应用程序时会发生什么 . 通过模块,我的意思是解决方案中的每个项目(我使用visual studio工作很多!) . 这些模块内置于* .lib或* .dll或* .exe本身 . 我知道应用程序的二进制文件包含数据段中所有单个转换单元(目标文件)的全局和静态数据(如果是const,则只读取数据段) . 当此应用程序使用带有加载时动态链接的模块... -
0 votesanswersviews
部署通用CRT DLL
如果我要部署使用Visual Studio 2015构建并且动态链接到CRT的非托管应用程序,只需在目标PC上安装相应的vcredist_.exe可再发行组件就足够了吗?我要问的原因是,从VS 2015开始,我们已经获得了通用CRT,我不确定前面提到的可再发行组件是否已包含UCRT DLL . 我已阅读2015年9月11日对此博客文章的更新:https://blogs.msdn.microsoft... -
2 votesanswersviews
GCC动态库构建问题
我是linux的新手,在使用动态库进行编译时,我收到了segmentationfault错误 . 我有两个文件 ctest1.c void ctest1(int *i) { *i =10; } ctest2.c void ctest2(int *i) { *i =20; } 我已使用以下命令将这两个文件编译到名为libtest.so的共享库中 gcc -shared -W1,-... -
53 votesanswersviews
为什么在x86_64上编译静态库时gcc不会隐式提供-fPIC标志
编译静态链接静态库的共享对象时遇到了很多问题 . 此问题仅出现在x84_64平台上 . 在x86_32上进行相同的编译工作时,我没有任何问题 . 也许这是一个特定于操作系统的GCC配置,但我的研究表明它是如何在x86_64平台上运行GCC的 . 无论如何,我在Ubuntu 10.04 x86_64上使用gcc 4.4.3 . 如何修复问题?...确保使用-fPIC编译所有静态库依赖项 . Ques... -
1 votesanswersviews
静态Qt 4.8.1在Ubuntu 12.04上构建
我正在尝试构建一个几乎静态的应用程序,因为可移植性问题 . 我希望能够在几个64位Linux发行版上运行可执行文件 . 我已成功地将Qt和构建与静态链接的libstdc和libgcc静态链接 . 但是,我有一些第三方库问题 . 我使用-qt-zlib构建了Qt,但我的最终应用程序仍然与系统zlib动态链接 . 具体来说我配置了: ./configure -static -nomake demos ... -
0 votesanswersviews
chgrp和链接库
根据/ bin / chgrp上的ldd linux命令,执行它的唯一必需库是libc.so.当使用gdb调试chgrp时,我注意到其他库实际上已加载,例如: /lib/x86_64-linux-gnu/libnss_compat.so.2 /lib/x86_64-linux-gnu/libnsl.so.1 /lib/x86_64-linux-gnu/libnss_nis.so.2 /lib/x8... -
0 votesanswersviews
如何在linux中使用模板类[duplicate]构建动态库(.so)
这个问题在这里已有答案: C++ Shared Library with Templates: Undefined symbols error 4个答案 Why can templates only be implemented in the header file? 14个答案 我正在尝试为gcc和g创建一个库 .我在那里使用了模板类来进行c . 运行 make 命令后,库liba.... -
0 votesanswersviews
'gcc -lXext'成功但libXext似乎没有链接
使用以下命令将二进制文件与gcc链接: gcc notion.o -Wl,-whole-archive ../ioncore/ioncore.a -Wl,-no-whole-archive -L/usr/X11R6/lib -lX11 -lXext -lSM -lICE -Wl,-whole-archive -L../libmainloop -lmainloop -lextl -ltu -Wl,-... -
401 votesanswersviews
何时使用动态库和静态库
在C中创建类库时,可以在动态(.dll)和静态(.lib)库之间进行选择 . 它们之间有什么区别,何时适合使用哪种? -
5 votesanswersviews
g将静态库链接到动态库(不带-fPIC)
我试图使用以下方法将静态库(staticLib.a)链接到动态库(dynamicLib.so): g++ *.o -Wl,--whole-archive staticLib.a -Wl,--no-whole-archive -shared -o dynamicLib.so 我得到了与here相同的错误: / usr / bin / ld:staticLib.a(object.o):在创建共享... -
2 votesanswersviews
在Linux上静态和动态地链接相同的库
我有一个共享对象/可执行文件,它静态和动态地链接到同一个库 . 库:liba.a和liba.so liba.a使用以下命令创建:ar -rv liba.a ao,包含libprint() - > print“static5”liba.so使用以下命令创建:gcc -shared -o liba.so -Wl,-h,liba.so ao ,包含libprint()打印“dynamic5”,l... -
25 votesanswersviews
为什么在64位而非32位平台上绝对需要fPIC?
我最近收到了: ...在创建共享对象时,不能使用“对本地符号”重定位R_X86_64_32;用-fPIC重新编译 尝试将程序编译为共享库时出错 . 现在解决这个问题并不太困难(使用-fPIC重新编译所有依赖项),但经过一些研究后发现这个问题只出现在x86-64平台上 . 在32位上,任何依赖于位置的代码仍可由动态加载程序重新定位 . 我能找到的最好的answer是: x86支持.text重定... -
0 votesanswersviews
编译使用dll的代码时未解析的外部
我正在尝试在VS 2005中使用dll代替我的代码 . 我的代码非常简单,只是为了尝试一个测试用例 . testdll.h: #ifdef TEST_EXPORTS #define TESTDLLPORT __declspec( dllexport ) #else #define TESTDLLPORT __declspec( dllimport ) #endif namespace T... -
1 votesanswersviews
为什么visual studio需要一个静态库(.lib)来进行动态链接?
我想在我的项目中使用一些dll(VS2013-c), 我使用“project-> properties-> vc目录”给出了dll和header的路径,并且在构建项目之后,出现了链接器错误(常见的“未解析的外部符号”) . 通过将.lib文件提供给链接器可以解决问题! 但为什么静态库(.lib)需要动态链接??? -
1 votesanswersviews
从C类制作Visual C DLL
我有以下C代码来制作DLL(Visual Studio 2010) . class Shape { public: Shape() { nshapes++; } virtual ~Shape() { nshapes--; }; double x, y; void move(double dx, double dy); virtual dou... -
0 votesanswersviews
当程序必须链接到在构建机器上使用的libstdc版本时?
我使用gcc 4.9.2(libstdc .so.6.0.20)构建了一些示例c应用程序 . 我可以在配备gcc 4.6.3((libstdc .so.6.0.16)的虚拟机上运行该程序 . 有时,应用程序无法在与构建环境不同的环境中运行(例如libstdc . so.6.0.16 vs libstdc .so.6.0.20) . 当程序必须链接到在构建机器上使用的libstdc版本时?你能给我... -
0 votesanswersviews
Oracle版本独立Pro * C代码
我使用Oracle 12C安装程序在Red Hat Enterprise Linux Server 6.0(Santiago)上编译了我的Proc * C代码 . 它工作正常 . 当我使用Oracle 11G设置将相同的可执行文件迁移到另一台服务器时,我得到此问题“libclntsh.so.12.1:无法打开共享对象文件” . 我已经在.bash_profile中正确导出了ORACLE_HOME和...