zoukankan      html  css  js  c++  java
  • QT下调用DLL出现LNK2019问题的解决

    在QT下完成了DLL,并建立了测试程序进行了验证,一切正常。但想到未来可能要在C#中调用,则希望将导出的文件名设置成原名,所以对每个引出的函数加上 extern "C" 前缀。DLL编译通过,但测试程序则报告LNK2019错误,找不到当初已经测试过的所有导出函数。去掉extern "C" 前缀,编译又恢复正常,这下有点懵。

    检查项目设置,发现构建设置中的构建目录有提示,大意是希望把编译的目的目录应当放在源项目目录下,且发现测试程序和DLL的Makefile有互相覆盖的提示。

    推测是编译目标目录设置的问题,原来为了方便,将测试程序的目标目录设置在了DLL的目标目录中,这可能是问题的所在。

    将测试程序的编译目标目录改回到源项目目录下,然后将DLL及其lib文件拷贝到该目录下,然后编译通过。

    总结:为了方便将测试程序的编译目标目录设置成了DLL的目标目录,导致了测试程序无法找到带有extern "C" 前缀的DLL导出函数,具体原因不太清楚。但教训是各个项目最好是使用项目设置缺省的编译目标目录,然后需要的话可以用编译脚本将DLL和lib文件拷贝到可执行文件的目录中。

    但是,后来发现原因可能不是这样的,我将所有DLL项目的目标目录设为可执行文件的目录中,则通过了。其原因不太明白

  • 相关阅读:
    关于打开或关闭Windows功能呈现空白的问题
    顺序表(C++)
    新的旅途
    javascript初识——初学1
    读:程序员成长路线图.后感
    学习之路十六:自定义数据库通用类 → 模仿+改进
    20120716 → 20120722 周总结
    工作的思考五:冷静分析SQL
    20120708 → 20120715 周总结
    20120813 → 20120819 周总结
  • 原文地址:https://www.cnblogs.com/myboat/p/14048920.html
Copyright © 2011-2022 走看看