使用来自COM dll的非COM对象

Using a non-COM object from a COM dll

本文关键字:COM dll 对象 的非      更新时间:2023-10-16

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

  • 客户端生成Client .exe
  • 算法生成一个算法.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 TestFunction(void)

显然,我没有正确地得到如何导出/导入我的函数。

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