我使用VC生成一个常规DLL,使用__declspec(dllexport) CString Func(CString strIn)到处一个函数,在测试工程中,将mydll.lib连接到测试工程中,并使用__declspec(dllimport) CString Func(CString strIn)导入该函数,使用strOut = Func(strIn)应用,在DEBUG下编译,提示如下错误信息;Linking...
QuerydllTestDlg.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) class CString  __cdecl GetMean(class CString)" (__imp_?GetMean@@YA?AVCString@@V1@@Z)
Debug/QuerydllTest.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.QuerydllTest.exe - 2 error(s), 0 warning(s)不知是何原因,该如何解决?

解决方案 »

  1.   

    将CString改为const char *试试,函数返回一个类,总觉得不妥。
    __declspec(dllexport) const char * Func(CString &strIn)
      

  2.   

    赵云是不败将军,你可不要污了这个名声你的问题:
    1、你写程序太不注重效率,现在的程序员都如此,sans的建议很好。
    2、你的库有没有连接到project里面去,常用的连接一个库有两种方法:
        a)、#pragma comment(lib, "abc.lib")
        b)、Porject settings 的 Link页,将abc.lib加入
    3、写交互模块,最好函数调用方式明确说明,如_stdcall方式,还有,字节对齐方式也要明确,不要一个工程用8字节对齐,一个工程用单字节对齐,这样出了问题一时还让你糊涂,平时注意,就不会犯这样的错误。
      

  3.   

    1.楼上的方法
    2。用引用试试看:
    __declspec(dllexport) CString& Func(CString& strIn)
    调用不变
    再不行就检查你的dll吧,def加入了函数名称没有?
      

  4.   

    1.楼上的楼上的方法
    2。用引用试试看:
    __declspec(dllexport) CString& Func(CString& strIn)
    调用不变再不行就检查你的dll吧,def加入了函数名称没有?
      

  5.   

    CString不能跨模块使用.无论是作为参数还是返回值.