.h文件内容:
#include <afx.h>class HelloDlg
{
private:
CString s;public:
void SetString(CString ls);
CString GetString();
}.cpp文件内容
#include "stdafx.h"
#include "hyf.h"
HelloDlg::HelloDlg()
{}
 
void HelloDlg::SetString(CString ls)
{
s=ls;
}CString HelloDlg::GetString()
{
return s;
}
编译后产生如下错误:
Compiling...
hyf.cpp
E:\VcDll\mydll\hyf.cpp(1) : warning C4651: '/D_DLL' specified for precompiled header but not for current compile
E:\VcDll\mydll\hyf.cpp(1) : warning C4651: '/D_AFXDLL' specified for precompiled header but not for current compile
E:\VcDll\mydll\hyf.cpp(6) : error C2533: 'HelloDlg::HelloDlg' : constructors not allowed a return type
E:\VcDll\mydll\hyf.cpp(6) : error C2084: function '__thiscall HelloDlg::HelloDlg(void)' already has a body
Error executing cl.exe.mydll.dll - 2 error(s), 2 warning(s)为什么?

解决方案 »

  1.   

    你忘了在类的声明中声明它的构造函数 了class HelloDlg
    {
    private:
    CString s;public:
    void SetString(CString ls);
    CString GetString();
             HelloDlg(); }
    应该就可以了
      

  2.   

    to alaofangel(天使之翼):
    类按你说的修改,cpp里面增加如下代码:
    HelloDlg::HelloDlg()
    {

    但是还错,错误很奇怪:
    E:\VcDll\mydll\hyf.cpp(4) : error C2533: 'HelloDlg::HelloDlg' : constructors not allowed a return type
      

  3.   

    你应该在HelloDlg::HelloDlg前面加上void,我像这样就行了
      

  4.   

    还有类声明中HelloDlg()前也要加void.
      

  5.   

    to cycloneboy(小子) :
    但是构造函数是不应该有void前缀的。