//#include <Winable.h>
//Define _WIN32_WINNT 0x0500#define MAX_LOADSTRING 1000
#include "resource.h"
#include <windows.h>//#include <afxwin.h>//HANDLE hInst;       // current instance     
HINSTANCE  hInst;
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow); 
LRESULT CALLBACK Mydialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); 
 int __stdcall MyRegisterClass(HINSTANCE);  
BOOL __stdcall InitInstance(HINSTANCE hInstance, int nCmdShow ); //int __stdcall 
int APIENTRY WinMain(HINSTANCE hInstance,   
 HINSTANCE hPrevInstance,
 LPSTR    lpCmdLine,
 int     nCmdShow )

MSG msg;
HACCEL hAccelTable;
TCHAR szTitle[MAX_LOADSTRING];
TCHAR szWindowClass[MAX_LOADSTRING];//初始化全局字符串
LoadString(hInstance,IDS_APP_TITLE,szTitle,MAX_LOADSTRING);
LoadString(hInstance,IDC_EXAM3_2, szWindowClass,MAX_LOADSTRING);
MyRegisterClass(hInstance); 
//初始化应用程序
if (!InitInstance (((hInstance ,nCmdShow)) //创建并显示窗口
{    
     return FALSE;
}
hAccelTable = LoadAccelerators(hInstance,(LPCTSTR)IDC_EXAM3_2); //装载加速键表
//主消息循环
while(GetMessage(&msg,(HWND) NULL,0,0))
{
 if(!TranslateAccelerator(msg.hwnd,hAccelTable,&msg))
 {
   TranslateMessage(&msg);
   DispatchMessage(&msg);
 }
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId,wmEvent;
PAINTSTRUCT ps;
HDC hdc;
TCHAR szHello[MAX_LOADSTRING];
LoadString (hInst, IDS_HELLO,szHello, MAX_LOADSTRING);// hInst
//分派消息处理
switch (message)
{
case WM_COMMAND: //处理消息菜单     
 wmId = LOWORD(wParam);
 wmEvent = HIWORD(wParam);
 //PARSE the menu selections
switch(wmId)
{
case IDM_ABOUT:
 DialogBox(hInst,(LPCTSTR)IDD_ABOUTBOX,hWnd, (DLGPROC)About);
 break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
  break;
case WM_PAINT:   //窗口重绘消息
 hdc = BeginPaint(hWnd,&ps);
 RECT rt;
 GetClientRect(hWnd, &rt);
 DrawText(hdc , szHello,strlen(szHello),&rt,DT_CENTER);
 EndPaint(hWnd, &ps);
 DrawText(hdc,"starting you vc++ leaging",28,&rt,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
 break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
 return DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}
//about 对话框消息处理函数
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK||LOWORD(wParam) ==IDCANCEL)
{
EndDialog(hDlg,LOWORD(wParam));
return TRUE;
}
 break;
}
   return FALSE;
}//****************************************
LRESULT CALLBACK Mydialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG:
    return TRUE;
case WM_COMMAND:
 if(LOWORD(wParam) == IDOK || LOWORD(wParam)== IDCANCEL)
 {
 EndDialog(hDlg,LOWORD(wParam));
 return TRUE;  
 }
    break;
}
return FALSE;
}
2.obj : error LNK2001: unresolved external symbol "int __stdcall InitInstance(struct HINSTANCE__ *,int)" (?InitInstance@@YGHPAUHINSTANCE__@@H@Z)
2.obj : error LNK2001: unresolved external symbol "int __stdcall MyRegisterClass(struct HINSTANCE__ *)" (?MyRegisterClass@@YGHPAUHINSTANCE__@@@Z)
Debug/3_2.exe : fatal error LNK1120: 2 unresolved externals解决不了了,郁闷

解决方案 »

  1.   

    你的InitInstance跟MyRegisterClass 在哪实现啊?
    我是没看到……………………
      

  2.   

    如果是IniInstance和MyRegisterClass没实现的话,不是出这种错误提示的我一般在写dll后,调用这个dll,把头文件引入,然后使用dll的函数,才出现这种错误,一般是忘了在dll里导出函数。
    要么另一种情况,也是出现这种错误,就是你的类声明里定义了函数原型,而却没有这个函数的实现,就会出错,印象中是这样的
      

  3.   

    哦,楼上大侠,这个两个不是API函数吗?直接调用不可以吗,还要自己写实现部分吗?本人是菜鸟,望指教。我以为这两个函数和LoadString()一样,直接可以用的呢,望给确认。还有,如果是API,那么相应的头文件是哪个啊,怎么在MSDN里查呢?谢谢