MinGW程序在动态链接时崩溃,但在静态链接时不崩溃

时间:2017-08-30 15:46:44

标签: c++ cmake mingw32

我正在使用MSYS2提供MinGW32和QTCreator以及CMake。我已经编写了一个非常基础的类(稍后将完成)作为共享库。我的主程序有一个这个类的实例作为其中一个类的成员。

基本上我的共享库看起来像:

// MyClass.h
class MyClass { public: MyClass(); };

// MyClass.cpp
#include "MyClass.h"
MyClass::MyClass() { }

我的程序看起来像:

// B.h

#include "MyClass.h"

class B
{
    public:
    // Some stuff here.

    private:
    MyClass  m_other;
};

当我静态链接时,一切都很好。当我动态链接时,程序崩溃,GDB无法获得堆栈跟踪。看起来这个程序甚至没有真正开始。

在共享DLL上使用nm我看到类似:

61c41604 T __ZN9MyClassC1Ev
61c41604 T __ZN9MyClassC2Ev

我猜这些是构造函数。

在程序中使用nm我看到:

00414388 I __imp___ZN9MyClassC1Ev

构建过程没有生成.lib。

我的CMakeLists.txt看起来像:

add_library(MyLib SHARED
    MyClass.cpp
)

我更愿意动态链接,所以如果有人能帮助我,我将非常感激。

0 个答案:

没有答案