2011-12-10 133 views
4

我在VS2010中创建了一个dll项目(Win32控制台应用程序> dll)。我在编译时在项目中放了一些头文件,我得到这个错误:使用VS2010创建C++非托管DLL

error LINK2001: unresolved external symbol [email protected] 

这是什么?我如何解决它?
此外,头文件定义了一些抽象类。

+1

如果它是一个控制台应用程序,为什么你需要一个DLL? – ThomasMcLeod

+2

@ThomasMcLeod:VS中的向导有点误导 - 首先你必须选择“Win32 Console Application”,然后在第二步中选择“DLL”。 – Simon

+0

项目向导有几个入口点,这是令人困惑的。但是,在“应用程序设置”对话框的最后一页中,您可以进入Win32应用程序向导,但您要选择“控制台应用程序”而不是“DLL”。 – ThomasMcLeod

回答

-1

问:无法构建的.dll(而不是使用.dll的.exe),是正确的?

问:您的.dll源文件中是否有任何DllMain()?

如果不是,你会考虑加一个吗?

问:你确定项目设置是否配置为“DLL”?对于“/ MT”(多线程,静态链接)?问:如果没有其他方法,您是否考虑创建一个新项目,创建一个“hello world”.dll并验证它是否构建?

+0

不是吗?它是为了什么? – atoMerz

+8

这应该是对问题的评论,而不是回答。 –

+0

是的,该DLL失败。我还没有创建一个项目来使用它。 DLLMain不存在。添加'void DLLMain(){}'不起作用。我所知道的是配置类型设置为动态链接库(.dll)。 – atoMerz

0

使用/NOENTRY选项是创建资源专用DLL所必需的选项。使用此选项可防止LINK将对_main的引用链接到DLL中。

项目属性页 - >链接 - >高级:找不到入口点设置为是(/ NOENTRY)

DLL包含使用/ clr编译的对象不与/NOENTRY链接;图像可能无法正确运行“ http://support.microsoft.com/kb/814472

+2

我不认为这个问题是关于纯资源的DLL。 “ – crashmstr

+0

但最后的评论是”添加DllMain到一个.cpp文件解决了它。现在它编译。谢谢。 - - atoMerz 12月10 '11在22:33“我觉得它是资源专用的DLL。 –

+0

“另外头文件定义了一些抽象类” - >听起来不像是资源而已。这听起来像他们以某种方式没有得到向导正常工作(或选择错误的选项)。 – crashmstr