我建了一个工作区,这个工作区包含两个项目:一个是Console的Server端,一个是Dialog的Client端。文件结构如下:
public.h
public.cppServer目录
   Server.cpp 包含public.h
   Client目录
   stdAfx.h  包含public.h我的Server端编译、链接、运行没问题。但在编译Client项目的时候却报ClientDlg.obj : error LNK2001: unresolved external symbol "char const * __cdecl geterror(char const *,char const *,int)" (?geterror@@YAPBDPBD0H@Z)错误。很明显这是函数找不到的信息。我看了Server项目的Debug目录下有public.obj,而Server目录下却没有public.obj,这样就难怪找不到了。问题是:为什么Client端没有生成public.obj呢?我明明包含了啊。public.h
#pragma once
#pragma warning(disable: 4786)
#include <assert.h>
#include <iostream>
#include <fstream>
#include <list>
#include <map>
#include <winsock2.h>                   // WinSock
#pragma comment( lib, "ws2_32.lib" )    // WinSock
#import <msxml4.dll>                    // MSXML#include <mswsock.h>
#pragma comment( lib, "mswsock.lib" )   // TransmitFile
#include <windows.h> 
using namespace std;...
LPCSTR geterror( LPCSTR fun, LPCSTR filename, int line );
...
我试过,好像去掉#pragma once也不行。谢谢!!