旧的C代码到ATL / COM DLL

时间:2012-02-12 02:08:52

标签: c++ c com atl

我有一个旧的c dll,我想转换为COM服务器。

它只暴露一个功能。

这就是我所做的: 我在VS 2010中创建了一个ATL项目,添加了一个带有包装函数的简单ATL对象。 我添加了c源代码和标题 在包装函数中,我调用了c函数,我添加了完整函数原型,如http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.5中所述。

出现以下错误:

函数

中引用的未解析的外部符号

我尝试了一切。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你需要使用extern" C"当包括c源:

extern "C" {
    #include "header.h"
}

答案 1 :(得分:1)

你可以尝试将c dll编译为常规的win32 dll,然后通过包装器从你的COM dll中调用它。您需要2个dll,但如果原始DLL编译正常,您应该能够从COM中使用它。