使用来自 COM dll 的非 COM 对象
Using a non-COM object from a COM dll
一个 Visual Studio C++ 解决方案由两个 C++ 项目组成:
- 客户产生一个client.exe
- 算法产生 algo.dll
客户端和 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
的链接器输入文件
一个 Visual Studio C++ 解决方案由两个 C++ 项目组成:
- 客户产生一个client.exe
- 算法产生 algo.dll
客户端和 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
的链接器输入文件