代码之家  ›  专栏  ›  技术社区  ›  Palmira

使用COM dll中的非COM对象

  •  -1
  • Palmira  · 技术社区  · 8 年前

    Visual Studio C++解决方案由两个C++项目组成:

    • 客户端生成Client.exe
    • Algo生成一个Algo.dll

    客户端和Algo通过COM层进行通信,因此Algo是一个COM dll。

    我想在Algo中添加一个函数。dll并直接从客户端调用它,避免了COM层,但在构建Client.exe时未能成功解决“未解决的符号”链接错误


    在Algo项目中,我添加了LIBRARY_EXPORT预处理器定义和以下文件: TestFile.h

    #ifdef LIBRARY_EXPORTS
    #    define LIBRARY_API __declspec(dllexport)
    #else
    #    define LIBRARY_API __declspec(dllimport)
    #endif
    
    extern "C"  LIBRARY_API bool __stdcall TestFunction();
    

    TestFile.cpp

    extern "C"  LIBRARY_API bool __stdcall TestFunction()
    {
        return true;
    }
    

    在客户端项目中,有一个对TestFunction()的调用;

    我在构建客户端时遇到链接错误: 未解析的外部符号“__declspec(dllimport)bool__ cdecl测试函数(void)

    显然,我不知道如何正确导出/导入我的函数。

    1 回复  |  直到 8 年前
        1
  •  1
  •   zmbq    8 年前

    你需要添加算法。client.exe的链接器输入文件的lib