- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我们的项目结构如下。
1) MainApp,它使用boost动态加载dll,所有dll项目/模块都是用/MD构建的。
2) 这些 dll 所需的任何其他项目都构建为静态 (.lib) 或动态 (.dll) 库。当这些依赖库是动态的时没有问题,因为我可以使用相同的 MD。但是,如果它们是静态的,我必须使用 MD 而不是默认的 MT 来构建它们,否则它无法加载到这些 dll 中。
这一直有效,直到我尝试编译 google cloud sdk c++。
这里是问题所在:Google cloud c++ sdk 有许多随 google git 而来的依赖项,但 Google 只包含(或构建默认)静态(/MT)版本。而且他们甚至不提供更改为 MD 的选项。我可以使用 cmake 命令 set(CMAKE_CXX_FLAGS_RELEASE "/MD")
将 google cloud lib 从/MT 更改为/MD,但这不会构建,因为它的依赖项是/MT。
简化情况:
MainApp.exe 动态加载 -> Function.dll (/MD),然后 Function.dll 静态链接 Google_cloud.lib(.lib 但带有/MD),然后 Google_cloud.lib 静态链接其依赖项(.lib 带有/MT , 不能改成/MD)
所以我想唯一的选择是使用/MD 手动自定义构建 google cloud 的静态依赖项,然后使用/MD 将 google cloud 构建为静态,然后由我的 function.dll 作为静态加载。
有什么建议吗?
最佳答案
您可以更改 BUILD_SHARED_LIBS
标志,这将导致默认库类型成为共享库。
另一种方法是简单地将正确的参数传递给 add_library
命令:
add_library(lib1 SHARED a.cpp b.cpp)
add_library(lib2 STATIC a.cpp b.cpp)
add_library(lib3 a.cpp b.cpp) # use the BUILD_SHARED_LIBS value
关于c++ - 如何在动态库(/MD)项目中使用静态库(/MT)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57044932/
在boost中,有两种类型的lib,一种是以mt-gd结尾,另一种是以mt-s结尾。这两者有什么区别? 最佳答案 阅读Boost Getting Started on Windows mt:多线程 d
我在 vs2012 的“release”下编译了 Quantlib 库,得到了 lib 文件,QuantLib-vc110-mt.lib。 我的问题是这个文件名中的“mt”是什么意思?我的猜测是它与“
我在 VS 中出现链接错误。它找不到 libboost_filesystem-vc140-mt-1_61.lib。但是我有 boost_filesystem-vc140-mt-1_61.lib。为什么
所以我找到了以下代码。 mt 和 mt-xs 代表什么?谷歌搜索没有找到相关信息,有没有文档可以告诉我? 最佳答案 这是一个间距值。
所以我找到了以下代码。 mt 和 mt-xs 代表什么?谷歌搜索没有找到相关信息,有没有文档可以告诉我? 最佳答案 这是一个间距值。
我想在我的网站上对齐一些元素,我已经在我的 HTML 中使用了 mt-5,但我需要更多的边距。我该怎么做? 最佳答案 Bootstrap 没有更高的值(value),但您可以创建自己的类。文档说 "Y
我需要找到一种方法以不同的顺序将解析树转移到另一个解析树。 它适用于具有 SVO 和 SOV 架构的两种语言的机器翻译项目。 t1 = s(np(n(he)), vp( v(went), np(n(h
我有一个 MT.Dialog,我在其中添加了一些日志信息。 行可以有不同的高度。 我如何确保我的 MT.Dialog 始终滚动到底部,以便始终可见整个最后一行? 但是 .... 如果用户向上滚动列表,
我有以下递归关系: T(n) = T(n/2) + T(n/2) + n 在这种情况下,我认为解决方案是通过以下方式找到的: T(n) = T(n/2) + T(n/2) + n = 2T(n/2
我将编写我的程序,无论其版本如何,它都使用 boost_python。由于程序是多线程的,所以我必须使用 libboost_python-mt。问题是,当我安装 libboost_python-dev
我正在尝试将我的可执行文件部署到另一台机器,因此我需要非调试运行时。 切换到非调试运行时/MT 会导致链接错误。/Mtd 编译正常。以下是许多错误的示例。 1>libcpmtd.lib(_tolowe
我正在试图理解编译C/C++项目时如何使用MT和MD选项。然而,由于无法将这些假定的缩略语扩展为有意义的短语,我忘记了从一段到下一段哪个是哪个。奇怪的是,我读过的文章都不是从定义M、T和D开始的,它们
我试图计算一个大矩阵中所有元素的总和。以下是测试用例: MT 和 AVX 耗时 37 秒 MT 且无 AVX 需要 40 秒 AVX 且无 MT 需要 49 秒 既不是 AVX 也不是 MT 105
MT 支持 SMTP SendMail,还是我坚持使用 MFMailComposeViewController?现在,我可以使用它(MFMailComposeViewController),但是当我添
为了读取和解析MT942、MT940文件,推荐使用哪个库。 我遇到了两种选择, 使用由 PROWIDE 提供的开源库 使用 SWIFT 标准库 - SWIFT 有没有其他方法可以读取和解析 SWFIT
此命令有效: robocopy \\build7\d$ d: *.* /mir /XD "System Volume Information" /XD "$Recycle.Bin" 但是当我尝试
您使用哪个Apple iOS SDK版本来构建MonoTouch 4.0.3应用程序? 最佳答案 从技术上讲,它们应从3.0开始运行,但是如果使用3.0 IOS SDK,则可能会遇到一些限制。 当前与
任何人都可以帮忙,我想更改我的图像(按钮),当我按下我的按钮图像时,我打开 MT.Dialog 然后我登录,当我登录时我想让按钮改变我该怎么做,我有找到了代码,但它在 MT.Dialog 中不起作用这
我使用以下命令编译并运行了 bjam 甚至 b2.exe: bjam --with-system --with-thread ..etc 我的库文件是: libboost_system-vc110-m
我们的项目结构如下。 1) MainApp,它使用boost动态加载dll,所有dll项目/模块都是用/MD构建的。 2) 这些 dll 所需的任何其他项目都构建为静态 (.lib) 或动态 (.dl
我是一名优秀的程序员,十分优秀!