2

请在某些上下文中查看此问题:链接未引用的库会破坏我的程序

我有以下程序:

#include <iostream>

int main( int argc, char* argv[] )
{
    std::cout << "Hello world" << std::endl;

    int *p;
    p = new int(3);
    std::cout << *p << std::endl;
    delete p;

    return 0;
}

在我链接到第三方库之前它工作正常。当我链接到我在一个更大的程序中需要的 Abaqus 库时,上面的程序在尝试运行时崩溃delete p;。使用 Dependency Walker,我发现调用operator new链接到operator newAbaqus 提供的定义。但是,调用operator delete链接到标准定义。

我已将new/delete替换为::new/::delete并得到相同的结果。

有没有办法解决标准的新/删除运算符?或者,我可以强制 Visual Studio 链接到这些运算符的正确(标准)定义吗?

4

1 回答 1

0

指定链接器选项"/DEFAULTLIB:MSVCRT.LIB"会使程序成功执行。

于 2013-07-01T17:02:21.783 回答