我有一堆旧的C代码,我使用MinGW编译它们,并将生成的库文件复制到VS C++ DLL(C++/CLI)项目(名为NBIS)目录中,并将它们添加到链接器->输入文件中环境。下面列出了每个配置的该字段的内容。
发布配置
liban2k.a;libbozorth3.a;libcblas.a;libclapck.a;libf2c.a;libfet.a;libfft.a;libihead.a;libimage.a;libioutil.a;libjpegb.a;libjpegl.a;libmindtct.a;libmlp.a;libnfiq.a;libnfseg.a;libpca.a;libpcautil.a;libutil.a;libwsq.a;libgcc.a;libmingwex.a;libmoldname.a;libmsvcr100.a
调试配置
liban2k.a;libbozorth3.a;libcblas.a;libclapck.a;libf2c.a;libfet.a;libfft.a;libihead.a;libimage.a;libioutil.a;libjpegb.a;libjpegl.a;libmindtct.a;libmlp.a;libnfiq.a;libnfseg.a;libpca.a;libpcautil.a;libutil.a;libwsq.a;libgcc.a;libmingwex.a;libmoldname.a;libmsvcr100d.a
当我使用调试配置编译并运行时,它成功了。当我使用发布配置进行编译和运行时,出现以下错误:“未处理的异常:System.IO.FileLoadException:无法加载‘NBIS.dll’导入的过程。”
如果我将发布配置的C/C++->代码生成->运行时库更改为“多线程调试DLL(/MDd)”,则发布配置能够成功编译并运行。有没有人遇到类似的问题并有解决方案或任何有关如何解决此问题的指导?
最佳答案
根据http://msdn.microsoft.com/en-us/library/xe4t6fc1(v=vs.71).aspx ,“生成调试信息 (/DEBUG) 选项将/OPT 选项的默认值从 REF 更改为 NOREF,从 ICF 更改为 NOICF。”这可能会删除您真正需要的符号。将其设置为 NOREF 并查看会发生什么(配置属性/链接器/优化页面)。
关于c++ - Visual Studio 2010 和 MinGW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9673252/