繁体   English   中英

__declspec(dllimport)导致MSVC 2010上的编译器崩溃

__declspec(dllimport) causes compiler crash on MSVC 2010

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在* .cpp文件中,尝试使用第三方lib:

#define DLL_IMPORT 
#include <thirdParty.h>
// Third party header has code like:
// #ifdef DLL_IMPORT
//    #define DLL_DECL __declspec(dllimport)

// fatal error C1001: An internal error has occurred in the compiler.

选择:

#define NO_DLL
#include <thirdParty.h>
// Third party header has code like:
// #elif defined(NO_DLL)
//    #define DLL_DECL


// Compiles fine, but linker errors as can't find DLL functions

我可以通过删除宏和#define在一起并手动编辑第三方文件以具有或不具有__declspec(dllimport)的方式来再现结果-因此,上述预处理器的作用只是为了说明正在发生的事情,而不是复制粘贴。

有没有人遇到类似的事情,或者可以暗示原因? (使用CMake创建)。 上面是2行* .cpp崩溃的实际示例,因此将其范围缩小到#include中。

以下内容也可以正常工作:

  1. 编译使用dllimport / export的第三方提供的示例(它们提供一个* .sln),因此这似乎不是库的问题
  2. 将第三方lib编译为生产项目的一部分(因此dllexport可以正常工作)

我已经拖曳了两个项目的项目设置页面,以尝试发现差异,但是空白。 当然,我可能会遗漏一些东西,因为这些设置页面并不是最容易浏览的页面。 我将在一天左右的时间内访问VS2008,因此可以与之进行比较。 第三方库是MySql ++。

2 个回复

编译器崩溃绝对是编译器中的错误,因此,最好将错误报告提交给Microsoft Visual C ++团队。

至于错误

#define DLL_DECL __declspec(dllimport)

是处理事情的错误方法。 应该设置一些项目设置,或者可以定义一个预处理指令,而不是DLL_DECL ,或者只是包含一个不同的文件。

原来是因为为尝试使用DLL的项目打开了预编译头。

2 在Qt 5.0.1 MSVC2010中设置编译器

我刚刚安装了Qt 5.0.1 MSVC2010 32bit,我需要配置套件和编译器。 我安装了minGW并通过Qt Automatically检测到它。 但是在Tools-&gt; Option-&gt; Build&Run菜单的Qt Version选项卡中,我得到了: 没有编译器 ...

3 MSVC 2010模板编译器问题

这是生成错误的代码... 因此,我们有一个函子列表,这些函子返回void并采用shared_ptr类型的参数。 有谁知道为什么MSVC编译器遇到问题? ...

6 可能的 MSVC 编译器错误

鉴于在 for 循环的条件子句中声明的 shared_ptr 变量包含 if/continue 语句,Microsoft 编译器(自 2015 版起)每次循环迭代都会生成额外的析构函数调用(总共两个)。 这会导致 Holder 界面用户无法访问的 Item 对象被破坏。 请参阅下面的示例代码 这 ...

8 编译器优化会导致程序崩溃

我正在用C ++ / Qt编写一个包含图形文件解析器的程序。 我使用g++编译项目。 在开发过程中,我不断比较不同编译器标志之间关于优化和调试信息的低级解析器层的性能,以及Qt的调试标志(打开/关闭qDebug()和Q_ASSERT())。 现在我遇到的问题是,唯一正常运行的构建是 ...

9 与MSVC ++ 2010编译器一起使用的调试器

假设我使用的不是Visual Studio,并使用cl.exe在命令行中进行构建,应该使用哪种调试器? 我尝试使用MinGW的gdb.exe ,但它似乎与cl.exe输出的调试符号不兼容(它报告“ 未找到调试符号 ”)。 我觉得这是一个很荒谬的问题,但是在MSVC ++上找到非VS特 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM