main.obj : error LNK2005: "wchar_t * __cdecl StrAdd(wchar_t *,wchar_t *)" (?StrAdd@@YAPA_WPA_W0@Z) 已经在 inject.obj 中定义
main.obj : error LNK2005: "wchar_t * __cdecl StrCpy(wchar_t *,wchar_t *)" (?StrCpy@@YAPA_WPA_W0@Z) 已经在 inject.obj 中定义
main.obj : error LNK2005: "wchar_t * ImeFileName" (?ImeFileName@@3PA_WA) 已经在 inject.obj 中定义
main.obj : error LNK2005: "wchar_t * pSysDir" (?pSysDir@@3PA_WA) 已经在 inject.obj 中定义
在main.cpp 里面调用 inject.cppmain.cpp 和 inject.cpp 都有包含 inject.h

解决方案 »

  1.   

    重复包含了,你可能在a.h里面包含了b.h,在b.h里面包含了a.h。
    比较简单通用的解决方法是在头文件中#pragma once,然后所有include写到cpp中去
      

  2.   


    有啊#ifndef inject
    #define inject
    #pragma once....
    $endif
      

  3.   

    这个 inject.h 里面只有一个 include <windows.h>
    这个好像没有关系吧
      

  4.   

    #pragma once就相当于那个
    #ifndef _h_h
    #define _h_h
    #endif了。
      

  5.   

    把声明放到.H中,在.CPP中实现
      

  6.   

    main.cpp 和 inject.cpp 都有包含 inject.h不会有什么问题
    如果按你描述是不应该出问题的
    你有没有把这些文件添加进工程
      

  7.   

    就算加了也没有问题啊。
    是的,因为功能是一样的。就像你if(true){if(true)}