0

我在网上看过,有点明白,但想问一下以确定。

我将本机 c++ 包装器转换为 c++/CLI 项目,以便 VB.NET “看到”

我转换后的项目依赖于一个 fortran 静态库。

在调试配置中,我的 C++/CLI 项目使用多线程调试 DLL (/MDd),我的 fortran 静态库使用调试多线程 DLL (/libs:dll /threads /dbglibs)。我可以很好地编译。

在发布配置中,我有一些问题。我的 C++/CLI 项目使用多线程 DLL (/MD),我的 fortran 静态库使用多线程 DLL。这会导致一堆未解析的令牌(如unresolved token "extern "C" void __cdecl __CxxUnregisterExceptionObject(void *,int)"

如果我将 fortran 静态库更改为使用调试多线程 DLL,它工作正常。

我的问题:让 fortran 静态库在发布配置中使用调试多线程 DLL 是否不好?我认为调试开关应该只在调试配置中使用,但我不知道如何摆脱错误,否则......

4

1 回答 1

0

我已经能够解决这个问题。

静态库最初在发布配置中配置为多线程,因此我将其更改为。我的 C++/CLI 项目也有一个 /nodefaultlib:msvcrt.lib 开关,所以我删除了它并编译

于 2013-10-28T18:04:38.083 回答