使用COM dll中的非COM对象

时间:2016-10-06 21:10:11

标签: c++ dll com dllimport dllexport

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 TestFunction(void)

显然,我没有正确地导出/导入我的功能。

1 个答案:

答案 0 :(得分:1)

您需要将algo.lib添加到client.exe的链接器输入文件