-1

我的代码将类似于以下代码:

class DMLGroup
{
 public:
  DMLGroup();
 ~DMLGroup();
  void    SetName(string name);
 private:
 string mName; 
 };
void DMLGroup::SetName(string nm){
   mName.assign( nm );
}

int main()
{        
   string api="API_DML"; 
    DMLGroup * dmlGr = new DMLGroup();
    dmlGr->SetName(api.c_str()); //Getting link error with this statement
}

我可以编译上述代码,但无法在 Windows 7 32 位操作系统上使用 MS Visual Studio 9 进行链接。

注意:我能够在 suselinux-x8664 平台上成功编译、链接和运行。问题只出在窗户上

请告诉我如何解决这个问题?

4

1 回答 1

0

以下代码可以正常编译和链接:

#include "stdafx.h"
#include <string>

class DMLGroup
{
public:
    DMLGroup() {}
    ~DMLGroup(){}
    void    SetName(std::string name);
private:
    std::string mName; 
};
void DMLGroup::SetName(std::string nm){
    mName.assign( nm );
}

int main()
{        
    std::string api="API_DML"; 
    DMLGroup * dmlGr = new DMLGroup();
    dmlGr->SetName(api.c_str()); //Getting link error with this statement
}

我改变了什么:

  • #included stdafx.h 因为它是 VS 标准的 - 您可以将其关闭
  • #includes 因为它丢失了
  • 用 std:: 修饰字符串的每次使用 - 因为很可能你会在头文件中使用你的类定义,而你根本不使用“使用命名空间”
  • 为构造函数和析构函数提供默认实现

就这样。检查上述部分中缺少的内容或提供暴露问题的示例并提供链接器错误消息。

于 2013-07-03T08:17:42.537 回答