使用来自 COM dll 的非 COM 对象

Using a non-COM object from a COM dll

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

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

我想在Algo.dll中添加一个函数,直接从Client调用,避开COM层,但是没有成功解决"unresolved symbol" link构建时的错误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();

我在构建客户端时遇到 link 错误: 未解析的外部符号“__declspec(dllimport) bool __cdecl TestFunction(void)

显然,我没有正确理解如何 export/import 我的功能。

您需要将 algo.lib 添加到 client.exe

的链接器输入文件