wxwidgets 的静态链接与动态链接

foxman 2008-03-29 01:23:27
下面的程序,用MDd可以通过编译连接并运行,但用MT,有下面的连接错误:
HelloWorld error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) 已经在 LIBCMT.lib(typinfo.obj) 中定义
HelloWorld error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) 已经在 LIBCMT.lib(typinfo.obj) 中定义
HelloWorld error LNK2005: __strdup 已经在 LIBCMT.lib(strdup.obj) 中定义
HelloWorld error LNK2005: __stricmp 已经在 LIBCMT.lib(stricmp.obj) 中定义
HelloWorld error LNK2005: __strnicmp 已经在 LIBCMT.lib(strnicmp.obj) 中定义
HelloWorld warning LNK4098: 默认库“MSVCRTD”与其他库的使用冲突;使用 /NODEFAULTLIB:library
HelloWorld error LNK2005: _abort 已经在 LIBCMT.lib(abort.obj) 中定义
HelloWorld error LNK2005: _atoi 已经在 LIBCMT.lib(atox.obj) 中定义
HelloWorld error LNK2005: _calloc 已经在 LIBCMT.lib(calloc.obj) 中定义
HelloWorld error LNK2005: _exit 已经在 LIBCMT.lib(crt0dat.obj) 中定义
HelloWorld error LNK2005: _free 已经在 LIBCMT.lib(free.obj) 中定义
HelloWorld error LNK2005: _getenv 已经在 LIBCMT.lib(getenv.obj) 中定义
HelloWorld error LNK2005: _isalnum 已经在 LIBCMT.lib(_ctype.obj) 中定义
HelloWorld error LNK2005: _isalpha 已经在 LIBCMT.lib(_ctype.obj) 中定义
HelloWorld error LNK2005: _isdigit 已经在 LIBCMT.lib(_ctype.obj) 中定义
HelloWorld error LNK2005: _isspace 已经在 LIBCMT.lib(_ctype.obj) 中定义
HelloWorld error LNK2005: _malloc 已经在 LIBCMT.lib(malloc.obj) 中定义
HelloWorld error LNK2005: _memmove 已经在 LIBCMT.lib(memmove.obj) 中定义
HelloWorld error LNK2005: _realloc 已经在 LIBCMT.lib(realloc.obj) 中定义
HelloWorld error LNK2005: _setlocale 已经在 LIBCMT.lib(setlocal.obj) 中定义
HelloWorld error LNK2005: _strchr 已经在 LIBCMT.lib(strchr.obj) 中定义
HelloWorld error LNK2005: _strftime 已经在 LIBCMT.lib(strftime.obj) 中定义
HelloWorld error LNK2005: _strncmp 已经在 LIBCMT.lib(strncmp.obj) 中定义
HelloWorld error LNK2005: _strncpy 已经在 LIBCMT.lib(strncpy.obj) 中定义
HelloWorld error LNK2005: _strpbrk 已经在 LIBCMT.lib(strpbrk.obj) 中定义
HelloWorld error LNK2005: _tolower 已经在 LIBCMT.lib(tolower.obj) 中定义
HelloWorld error LNK2019: 无法解析的外部符号 "public: void __thiscall wxStringData::Free(void)" (?Free@wxStringData@@QAEXXZ) ,该符号在函数 "public: void __thiscall wxStringData::Unlock(void)" (?Unlock@wxStringData@@QAEXXZ) 中被引用
HelloWorld fatal error LNK1120: 1 个无法解析的外部命令
HelloWorld warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)





/*
* hworld.cpp
* Hello world sample by Robert Roebling
*/

// For compilers that support precompilation, includes "wx/wx.h".
#include <wx/wx.h>


class MyApp: public wxApp
{
virtual bool OnInit();
};


class MyFrame: public wxFrame
{
public:

MyFrame(const wxString& title,
const wxPoint& pos, const wxSize& size);

void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);

DECLARE_EVENT_TABLE()
};

enum
{
ID_Quit = 1,
ID_About,

};

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(ID_Quit, MyFrame::OnQuit)
EVT_MENU(ID_About, MyFrame::OnAbout)
END_EVENT_TABLE()

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
MyFrame *frame = new MyFrame( "Hello World",
wxPoint(50,50), wxSize(450,340) );
frame->Show(TRUE);
SetTopWindow(frame);
return TRUE;
}

MyFrame::MyFrame(const wxString& title,
const wxPoint& pos, const wxSize& size)
: wxFrame((wxFrame *)NULL, -1, title, pos, size)
{
wxMenu *menuFile = new wxMenu;
menuFile->Append( ID_About, "&About..." );
menuFile->AppendSeparator();
menuFile->Append( ID_Quit, "E&xit" );

wxMenuBar *menuBar = new wxMenuBar;
menuBar->Append( menuFile, "&File" );

SetMenuBar( menuBar );

CreateStatusBar();
SetStatusText( "Welcome to wxWindows!" );
}


void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
Close(TRUE);
}

void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{

wxMessageBox("This is a wxWindows Hello world sample",
"About Hello World", wxOK | wxICON_INFORMATION, this);
}
...全文
2146 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
luckyboy101 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sms88 的回复:]
项目 -> 属性 -> c/C++ -> 代码生成 -> 运行时库 设置为: 多线程调试 DLL (/MDd)
[/Quote]
好方法
sms88 2008-08-28
  • 打赏
  • 举报
回复
项目 -> 属性 -> c/C++ -> 代码生成 -> 运行时库 设置为: 多线程调试 DLL (/MDd)
菜牛 2008-08-25
  • 打赏
  • 举报
回复
你用到的库,要和工程用同样的编译选项重新编译
sms88 2008-08-25
  • 打赏
  • 举报
回复
楼上的,我也是同样的问题,在VS2003下
meteor333 2008-06-12
  • 打赏
  • 举报
回复
".........已经在 LIBCMT.lib(strdup.obj) 中定义 " 在链接器下面的输入中忽略"LIBCMT.lib"

下面这个不知道怎么解决
HelloWorld error LNK2019: 无法解析的外部符号 "public: void __thiscall wxStringData::Free(void)" (?Free@wxStringData@@QAEXXZ) ,该符号在函数 "public: void __thiscall
fhjianke 2008-05-23
  • 打赏
  • 举报
回复
你好
我也遇到了类似的问题,不知道你解决了吗?
可以介绍下解决方案吗?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧