小编Fin*_*ter的帖子

使用DEF从Visual Studio 2010中的DLL导出函数

我继承了一个庞大的C++多项目解决方案,其中包含许多动态库但没有任何动态库

__declspec(dllexport)
Run Code Online (Sandbox Code Playgroud)

了解到一个人不一定要插入任何dllexport(会有很多工作),但除了相应的.dll之外,还可以使用.def文件.

为了尝试我从这里建立一个"DLL Hello World"项目,从标题中删除了dllexport并且......拼命地失败了.用已引用的页面来说,我的关键问题是如何

"[..] use the .def file when building the DLL."
Run Code Online (Sandbox Code Playgroud)

我的.def文件是(我只使用Add方法尝试代码):

LIBRARY   MathFuncsDll
EXPORTS 
?Add@MyMathFuncs@MathFuncs@@SANNN@Z
Run Code Online (Sandbox Code Playgroud)

在Visual Studio 2010中构建DLL以便导出Add方法时如何使用它?

c++ dll visual-studio-2010

7
推荐指数
1
解决办法
1万
查看次数

缺少包括在使用Visual Studio 2010编译QT时

我尝试在Windows 7,64位的Visual Studio 2010的命令提示符中编译QT 5.0.0.该过程本身是已知的,并在此处此处进行描述.在我的机器上,编译停止,因为编译器找不到文件:

 fatal error C1083: [..] "GLES2/gl2.h": No such file or directory
Run Code Online (Sandbox Code Playgroud)

我发现C:\QTSources在我尝试构建源的文件夹的子目录中丢失了文件.

我将该行添加INCLUDEPATH += "C:/QTSources/qtwebkit/Source/ThirdParty/ANGLE/include"qtsdk.pro文件中,当我说时,qmake似乎用它来生成Makefile configure [options].建议这样做,但它没有帮助.该路径既不会出现在Makefile中,也不出现在对编译器的任何调用中.

我怎样才能正确申报我的包含?

qt command-line include visual-studio-2010

5
推荐指数
2
解决办法
1万
查看次数

Boost.MSM:通过join伪状态退出正交区域

我打算将boost.msm与包含正交区域复合概念一起使用.我想在退出时同步所有正交区域.换句话说:当且仅当所有区域都达到其最后状态时,才会激活我的复合后的状态.

UML 2.4"超结构"提出了连接伪状态(即第15.3.8章).在boost中,有一个fork但我找不到其对应连接的任何实现.

boost.msm中没有join伪状态吗?如何将boost伪状态的概念应用于boost.msm?

c++ boost uml boost-msm

5
推荐指数
1
解决办法
540
查看次数

DLL中的静态数据

我的问题非常类似于这个:DLL中的类有一个静态成员.在这种情况下,静态成员是QString类型(QT类型)并为类提供名称.我提供了类级别的正常导出:__declspec(dllexport).

当我将DLL与我的类链接到另一个项目并尝试编译它时,我得到静态数据的"未解析的外部符号"错误.我验证了两件事:

  1. Dumpbin肯定会报告由编译的DLL导出的静态数据成员.
  2. 实际上,静态数据成员似乎不会在报告错误的应用程序中使用.

DLL中的HEADER文件(.h)是:

class __declspec(dllexport) MyClass {
public: 
   virtual ~MyClass();
   static const QString JUST_A_NAME;    
};
Run Code Online (Sandbox Code Playgroud)

DLL中的IMPLEMENTATION文件(.cpp)是:

#include "MyClass.h"

MyClass::~MyClass() { }
const QString MyClass::JUST_A_NAME("call_me_al");
Run Code Online (Sandbox Code Playgroud)

已经提到的帖子相比,我避免使用内联方法,例如实现显然不在标题中.类型QString(参见第83行ff.)本身包含几个内联.可能导致错误?

编辑:我在我的应用程序的标题中添加了一个import语句.它位于任何包含之前. APPLICATION中的HEADER文件(.h)是:

class __declspec(dllimport) MyClass {
public: 
   virtual ~MyClass();
   static const QString JUST_A_NAME;    
};
Run Code Online (Sandbox Code Playgroud)

错误保持不变:

error LNK2001: non resolved external symbol ""public: static class QString const MyClass::JUST_A_NAME" (?JUST_A_NAME@MyClass@@2VQString@@B)". <name of .obj file from application>
Run Code Online (Sandbox Code Playgroud)

c++ windows dll linker

3
推荐指数
1
解决办法
3286
查看次数

铁锈匹配!宏在枚举方面的行为异常

鉴于我使用火柴!
当我尝试将它与枚举一起使用时
,它会显示出意外的行为。

请参阅以下最小示例,该示例也可在游乐场中使用

pub enum Test {
    FIRST,
    SECOND
}

fn main() {
    let x = Test::FIRST;
    let y = Test::SECOND;
    
    println!("{}", matches!(x, Test::FIRST));   // <-- 'true',  as expected
    println!("{}", matches!(x, Test::SECOND));  // <-- 'false', as expected
    
    println!("{}", matches!(Test::FIRST,  x));  // <-- 'true', as expected
    println!("{}", matches!(Test::SECOND, x));  // <-- 'true', NOT as expected
    
    println!("{}", matches!(x, y));             // <-- 'true', NOT as expected
}
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的解释为什么matches!不按预期运行,
是否有一种简单的方法来比较两个enum变量的相等性?

macros enums rust

3
推荐指数
1
解决办法
1303
查看次数

标签 统计

c++ ×3

dll ×2

visual-studio-2010 ×2

boost ×1

boost-msm ×1

command-line ×1

enums ×1

include ×1

linker ×1

macros ×1

qt ×1

rust ×1

uml ×1

windows ×1