在另一个版本的visual studio中使用dll

时间:2016-02-29 13:25:49

标签: c# c++ dll

我必须在我的C ++项目中使用第三方dll。我所知道的关于这个dll的是它是在Visual Studio 2013中构建的。我使用VS2010并且由于原因无法切换到2013.

所述dll导出一些返回std :: string的函数。不出所料,调用这些函数会在某些字符串释放代码中产生访问冲突。

据我了解这个问题,没什么好惊讶的,除了切换到VS2013之外没什么可以做的,我不能。

这是事情。这个第三方dll带有一个c#示例项目,可以导入它并且工作得很好!

所以我的问题是:

  1. (纯粹是理论上的)为什么?它是.NET字符串编组工具吗?

  2. 假设我将有问题的dll包装在我自己的托管dll中,然后在我的非托管代码中使用该托管包装器。它会起作用吗?

  3. 如果问题2的答案是肯定的,那么如何?我完全不知道c#,所以我不介意几点。

  4. 编辑:

    因此,出于纯粹的绝望,我在项目中调整了导入的函数签名 - 它是std::string (__cdecl *TFunc)();,将其更改为BSTR (__cdecl *TFunc)(); - 它的工作原理!即使库手册和依赖性walker工具都坚持std :: string是正确的。将此作为编辑而不是答案发布,因为我仍然不知道这里发生了什么,这很可怕。

0 个答案:

没有答案