我正在尝试制作一个可以在任何Windows机器上运行的二进制文件,而无需安装可视化c ++的东西(我假设那是MSVCP120D.dll,但是我的搜索并不是很有效,这实际上是什么).我为一个任务做了一个游戏,并希望有其他人(非开发人员没有安装VS的东西),帮我测试但是他们不断收到错误,说上面的dll丢失了.我没有使用任何Visual C++的东西,并设置了/ Za标志,以确保它只是ANSI C++.Visual Studio是否支持编译ANSI C++,如果是这样,我如何使它不使用Visual C++的东西,如果它不支持这个我应该使用什么编译器?
我一直在将一些Linux工具(以及我自己的一些C代码)交叉编译到Android,我面临的挑战之一就是Android的libc有一些缺失/剥离的组件,我最终修补了我的代码以使其能够与Android的libc(例如像http://credentiality2.blogspot.com/2010/08/compile-ncurses-for-android.html这样的问题)
Q1:在使用arm工具链(或ndk-build)进行交叉编译时,如何静态链接glibc(以及其他依赖项)?
Q2:对于Android的二进制文件静态链接glibc是一个好主意吗?如果我开始静态链接,我是否应该期待任何事情?有任何性能/内存问题吗?
我理解静态与动态链接的大部分优缺点 - C++应用程序 - 我应该为库使用静态或动态链接吗?和 静态链接与动态链接
因此,我希望知道在交叉编译二进制文件时是否应该静态链接glibc for Android.
目前我的项目依赖于许多pod,添加pod使我的二进制文件更大,我想检查我链接的pod并查看哪些是最大的,以便我可以知道我应该删除哪些.
任何的想法?
谢谢.
我有以下问题:我使用Microsoft Visual Studio 2012,它将msvcp110.dll添加到我的版本.我已经在这里和那里阅读了一些帖子,我知道这是由于我同时使用iostream和string并将其链接到我的程序.我在我的电脑上使用它没有问题,但我想向其他人展示.所以我的问题是,尽管对其他人尽可能无痛,我怎么能绕过这个问题,仍然使用一些基本的标准好东西?我知道其他人可以安装Visual Studio Runtime的东西,但这有点痛苦.
可能在任何操作系统上都可以静态或动态地编译C++/C标准库.在Windows上我总是喜欢静态构建,因为它有助于避免在特定的Windows版本,版本和服务包等上安装或不安装不同版本库的"dll hell"问题.静态链接使软件更便携,更少依赖于什么最终用户使用他的操作系统(我甚至看到最终用户可以SHIFT+DEL在某些DLL上进行的示例system32,他无法解释原因,或者当用户声称我的应用程序包含病毒时,因为它试图从官方Microsoft网站下载动态链接的先决条件...)因此,在我的经验中,静态链接通常比动态链接更好.但是,我是Linux新手,所以有人可以分享他的经验吗?我的问题是:如果我们忽略动态的一个允许节省内存和硬盘空间以及我们计划使用自动安装程序(硬盘驱动器空间和内存)分发软件的事实,那么在Linux上提供什么样的链接(动态或静态)?现在已经足够便宜了,所以没有理由牺牲创建真正好的便携式安装程序所需的工作时间来赢得一些兆字节的RAM或硬盘空间.动态/静态链接是否存在特定于Linux的问题?
我正在关注YouTube上关于编译器的教程视频,当时我发现C编程语言更快,因为它允许静态链接和动态链接,但Java只允许动态链接,这就是为什么C比Java快得多的原因.
我的问题是,如果静态链接使程序运行得更快,为什么它不包含在Java中?我知道为什么Java的开发人员决定不包含静态链接必须有一些真正的理由,我只是想知道原因是什么.
注意:我不知道这个问题是否已经在SO上有答案,但由于我找不到,所以我发布了.如果答案已经存在,请提供链接.
注意:提供的教程链接是印地语.对于那个很抱歉.
我一直在努力的DLL最近增长了很多.是否有任何工具可以告诉我对此负责的是什么?例如,它是一个被实例化太多次的模板,或者可能是第三方库,或者可能是提升?
我正在寻找一种看大小而不是性能的分析器.
我正在学习静态和动态库.到目前为止,我理解为什么我需要一个动态库.如果有什么东西在变化,最好插入一个新版本,所有的应用程序都会自动更新,甚至没有注意到.
a)非常适合插件,b)使用相同库的多个应用程序和c)需要纠正错误时的维护.
但是,为什么有人会使用静态库?我的意思是什么是优势?某人有一个例子,所以我能更好地理解它吗?是否使产品成为专有产品?
编辑:由于评论中的混乱.我理解静态库是什么,我也知道动态库之间的区别.除了我之外,为什么有人会使用静态库而不仅仅是源本身.我想我现在开始明白静态库具有以下优点:
a)更好的代码维护b)更快的编译时间
当可执行文件与静态库链接时,可执行文件仅包含代码中使用的必要库部件,对吧?
但是我错过了这个部分 - 如何使用共享对象(动态链接库)?
据我所知,它们不包含在可执行文件中,它们是动态加载的dlopen,这是由链接器直接完成的,对吧?
在这种情况下,这个库位于内存中的哪个位置?我的意思是,这里有帖子,解释说动态库可以减少内存使用量,但究竟是怎么回事?如果动态库以某种方式加载到共享内存中(对于多个进程),在这种情况下内核如何处理并发?
我意识到这可能是基本的,如果这是重复的话我很抱歉,我找不到这样的.
我知道静态链接与动态链接,我问的是有点不同.
我目前正在学习C++(我知道在创建GUI应用程序之前我必须先学习所有内容,首先是在控制台上,但是)
在做一些搜索SDK时 - 这有助于创建我的应用程序的GUI - 让我自己编写重要的代码 - 我发现,下载并安装了一个C++ IDE; Qt SDK(Qt Creator试用30天; 版本2.5.2,基于Qt 4.8.2).
我的问题是:
如果你能帮帮我,谢谢!如果这是一个非问题或不适合本网站,请给我参考等.:)
注意!
我的应用程序将是封闭源代码(商业,非免费,但有些内容除外).我猜这会影响哪些许可条款/类型适用于我.
此外,当我购买软件时,我是否必须提及我使用它或提供任何参考等.
澄清
澄清一下,我的需求如下:
我正在尝试将我的一些代码分开并将其放在一个共享库中,我可以在其他地方使用它.在文档中:
http://doc.qt.io/archives/qt-4.7/sharedlibrary.html
他们说你无法链接到其他头文件.我如何能够将共享标头包含到我的共享库中?