/MD 和 /MT 运行时库之间的编组

Posted

技术标签:

【中文标题】/MD 和 /MT 运行时库之间的编组【英文标题】:Marshalling Between /MD and /MT Runtime Libraries 【发布时间】:2014-01-06 05:18:42 【问题描述】:

我有第三方库,分别编译为 /MTd/MT。这些无法更改。我正在使用 MT dll 使用它们。

我如何跨越边界进入/MD dll 领域以满足/CLI 的要求并希望从C# 调用这些第三方库?

【问题讨论】:

【参考方案1】:

相当简单:COM 风格。也就是说,不要假设你可以传递 C++ 类型(因为 C++ 库不同),而是使用原生 COM 机制传递所有数据,例如 BSTR/_bstr_t

【讨论】:

以上是关于/MD 和 /MT 运行时库之间的编组的主要内容,如果未能解决你的问题,请参考以下文章

VC 运行时库 /MD/MDd 和 /MT/MTd

VC运行时库(/MD/MT等)

一文带你弄懂Visual Studio:运行时库及MT/MTDMD/MDD

错误 MSB8024:不支持使用静态版本的 C++ 运行时库

“/MD /MT”和“dll lib”之间的概念歧义

C++ 运行时库设置为 /MT,但仍然缺少 api-ms-win*.dll