我已经开发了一个C ++类来访问USB上的软件保护加密狗。该C ++类是在Linux下使用g ++开发的,但我可以在Windows下使用MinGW成功编译它。我有一个科学应用程序,它是使用VB6(Visual Basic 6)构建的。
问题是如何将我的C ++类暴露给VB6应用程序?有哪些可能的方法?我需要使用COM吗?(好吧,“无微软”的解决方案更可取:)
非常感谢您的帮助!
更新1。阅读您的评论后,我意识到需要实现C ++类的COM包装器。周围有没有好的最近的例子?我能否使用MinGW(避免MSVC)实现COM包装器?
更新2。最终,我决定为这个问题提供悬赏。以下是我想更好地理解的事情:
1.我意识到需要为我的C ++类实现COM包装器。有人可以为像这样的类提供工作示例吗?
问题是如何将我的C ++类暴露给VB6应用程序?有哪些可能的方法?我需要使用COM吗?(好吧,“无微软”的解决方案更可取:)
非常感谢您的帮助!
更新1。阅读您的评论后,我意识到需要实现C ++类的COM包装器。周围有没有好的最近的例子?我能否使用MinGW(避免MSVC)实现COM包装器?
更新2。最终,我决定为这个问题提供悬赏。以下是我想更好地理解的事情:
1.我意识到需要为我的C ++类实现COM包装器。有人可以为像这样的类提供工作示例吗?
class ValueMapper
{
public:
ValueMapper( ) { }
ValueMapper( double fmin, double fmax, int ilength ) {
SetMapping( fmin, fmax, ilength );
}
inline double GetMin() { return min; }
inline double GetMax() { return max; }
inline int GetLength() { return length; }
virtual inline void SetMapping( double fmin, double fmax, int ilength )
{
min = fmin;
max = fmax;
length = ilength;
}
virtual inline int MapValue( double value ) {
double factor = length / (max - min);
return (int)RoundTo( (value-min) * factor );
}
static double RoundTo( double value, double eps = 1 ) {
return floor(value/eps + 0.5) * eps;
}
protected:
double min;
double max;
int length;
};
2. 如何在VB6中使用生成的COM包装器?我需要注册一个COM服务器吗?可以不注册使用吗?
3. 可选。是否可以使用MinGW实现COM包装器?