none
warning C4273: “add”: dll 链接不一致 RRS feed

  • 问题

  • vc++2010学习写dll,生成解决方案出现警告:warning C4273: “add”: dll 链接不一致,请教如何解决且不影响原有意图?

    我的源代码如下:

    //头文件:

    #ifdef DLL1_API
    #else
    #define DLL1_API _declspec(dllimport)
    #endif

    DLL1_API int add(int,int);
    DLL1_API int subtract(int,int);

    class /*DLL1_API*/ Point
    {
    public:
     DLL1_API void output(int,int);
    };

    //源文件:

    #define Dll1_API _declspec(dllexport)

    #include "Dll1.h"
    #include <Windows.h>

    #include <tchar.h>
    #include <strsafe.h>

    int add(int a, int b)
    {
     return a+b;
    }

    int subtract(int a, int b)
    {
     return a-b;
    }

    int multiple(int a, int b)
    {
     return a*b;
    }

    void Point::output(int x,int y)
    {
     HWND hwnd=::GetForegroundWindow();
     HDC hdc=GetDC(hwnd);
     TCHAR buf[20];
     memset(buf,0,40);
     ::StringCchPrintf(buf,10,_T("x=%d,y=%d"),x,y);
     TextOut(hdc,0,0,buf,_tcslen(buf));
     ReleaseDC(hwnd,hdc);
    }

    2012年11月30日 11:13

答案

  • 历尽艰辛终于找到问题了源文件#define Dll1_API _declspec(dllexport)大小写错了

    改成#define DLL1_API _declspec(dllexport)就可以了。

    感谢老师的回答,但我不得不取消您的标记为答案


    2012年12月7日 11:46

全部回复

  • #define DLL1_API _declspec(dllimport)

    ---〉

    #define DLL1_API _declspec(dllexport)


    新浪微博http://weibo.com/xianglitian,欢迎围观

    2012年12月1日 2:52
  • 放在什么位置?因为这个头文件会同时给客户端用的话,我不知道该怎么放
    2012年12月2日 2:36
  • 可以将您的头文件这样修改一下:

    #define DLL1_API_EXPORT
    #ifdef DLL1_API_EXPORT
    #define DLL1_API _declspec(dllexport)
    #else
    #define DLL1_API _declspec(dllimport)
    #endif
    DLL1_API int add(int,int);
    DLL1_API int subtract(int,int);
    class /*DLL1_API*/ Point
    {
    public:
    	DLL1_API void output(int,int);
    };



    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2012年12月3日 2:12
    版主
  • 历尽艰辛终于找到问题了源文件#define Dll1_API _declspec(dllexport)大小写错了

    改成#define DLL1_API _declspec(dllexport)就可以了。

    感谢老师的回答,但我不得不取消您的标记为答案


    2012年12月7日 11:46