构造函数/析构函数链接错误

我有一个项目(即创build一个dll),说test.dll,我不是导出类的构造函数和析构函数,说TestClass,在DLL中。 这是因为我有一些工厂函数应该被调用来创build和销毁TestClass的对象。 这个devise在单独的例子中工作得非常好,我创build的地方是我尝试从test.dll中使用TestClass的对象。

但是,当我链接到我的生产模块中的项目test.dll(或.lib在我的情况下,因为我使用的Visual Studio),我得到奇怪的链接错误指向构造函数和析构函数,它无法findTestClass。 我知道这样一个事实:我不会调用new / delete,或者在项目的任何地方创buildTestClass的任何栈实例。 生产模块与C ++一起使用C#/ CLR / CLI我认为。 唯一的解决办法是为我导出TestClass的构造函数和析构函数。 这是不可取的devise。

这种情况是否对任何人都熟悉? 有人可以指出可能是什么问题?

这是我得到的错误

如何将execv用于位置未知的命令?

与Multi-Touch Manipulations相关的未公开的.NET代码引发exception

如何获取Windows / C#中顶级窗口的进程名称标题

如何移动到C ++的前一行?

2个ItemsControl和一个数据源

Error 5264 error LNK2028: unresolved token (0A000BA3) "public: virtual __thiscall BE::TestClass::~TestClass(void)" (??1TestClass@BE@@$$FUAE@XZ) referenced in function "public: virtual void * __thiscall BE::TestClass::`vector deleting destructor'(unsigned int)" (??_ETestClass@BE@@$$FUAEpaxI@Z) AMBestDetailBridge.obj BEBase Error 5373 error LNK2001: unresolved external symbol "public: virtual __thiscall BE::TestClass::~TestClass(void)" (??1TestClass@BE@@$$FUAE@XZ) AMBestDetailBridge.obj BEBase

谢谢!

C的非POSIXsockets

堆栈限制和线程之间的关系

为什么fseek永远不会返回-1

我怎样才能提升我的过程在运行时在WIN XP下

线程和进程ID的值范围是多less?

链接错误说你是通过delete []调用析构函数的,所以最有可能的是在你的生产模块中,你有一定的代码

TestClass* pTest = ... delete pTest; TestClass* pTestArray = ... delete[] pTest;

当然,在智能指针的情况下可能并不那么明显:

SmartPtr<TestClass> spTest = ... // delete called automatically when out of scope.

分配在一个模块中,在另一个模块中删除会让你处于潜在的风险之中 – 因为这两个模块可能使用不同的堆进行内存分配(比如说你重新定义了新的操作符),幸运的是这个问题暴露在链接时间而不是运行时间。

相关文章

本篇内容主要讲解“gitee如何上传代码”,感兴趣的朋友不妨来...
这篇“从gitee上下的代码如何用”文章的知识点大部分人都不太...
这篇文章主要介绍“gitee如何下载仓库里的项目”,在日常操作...
本篇内容主要讲解“怎么在Gitee上更新代码”,感兴趣的朋友不...
本文小编为大家详细介绍“怎么将工程托管到gitee”,内容详细...
这篇文章主要介绍了gitee中图片大小如何调整的相关知识,内容...