Visual Basic Sterling ActiveX错误

时间:2012-09-13 20:59:42

标签: vb.net visual-studio-2010 activex

我是Visual Basic的新手,我正在使用我正在处理的程序。我正在使用Sterling ActiveX库创建一个基本的功能程序,它可以为Sterling Trader软件执行简单的任务(发送订单)。我只是想做一些基本的工作,我可以建立起来。到目前为止,这是我的代码:

Imports SterlingLib

Public Class Form1

Dim WithEvents m_STIEvents As STIEvents

Private Declare Sub GetLocalTime Lib "kernel32" (ByRef lpSystemTime As SYSTEMTIME)

Private Structure SYSTEMTIME

    Dim wYear As Short

    Dim wMonth As Short

    Dim wDayOfWeek As Short
    Dim wDay As Short
    Dim wHour As Short
    Dim wMinute As Short
    Dim wSecond As Short
    Dim wMilliseconds As Short
End Structure

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    m_STIEvents = New STIEvents

End Sub

Private Sub m_STIEvents_OnSTIOrderUpdateMsg(ByVal oSTIOrderUpdateMsg As SterlingLib.STIOrderUpdateMsg) Handles m_STIEvents.OnSTIOrderUpdateMsg

    Dim order As STIOrder
    order = New STIOrder
    Dim storder As structSTIOrder

    storder.bstrAccount = "ACCT7"
    storder.bstrSide = "B"
    storder.bstrSymbol = "CSCO"

    order.Quantity = "500"
    storder.bstrStrPriceType = SterlingLib.STIPriceTypes.ptSTIMkt
    storder.bstrTif = "D"
    storder.bstrDestination = "NYSE"

    Dim theTime As SYSTEMTIME
    GetLocalTime(theTime)

    storder.bstrClOrderId = storder.bstrAccount & theTime.wYear & theTime.wMonth & theTime.wDay & theTime.wHour & theTime.wMinute & theTime.wSecond & theTime.wMilliseconds

    Dim ret As Integer

    ret = order.SubmitOrder



End Sub

Private Function Text1() As Object
    Throw New NotImplementedException
End Function

运行此程序时,出现以下错误: “您的应用程序中发生了未处理的异常。如果单击”继续“,应用程序将忽略此错误并尝试继续。如果单击”退出“,应用程序将立即关闭。

检索具有CLSID {5E89F49B-6A12-420F-8570-E510EF1B580A}的组件的COM类工厂因以下错误而失败:800700c1。“

这意味着什么,我该如何纠正?当我调试时,它突出显示“m_STIEvents = New STIEvents”作为出错的行,但我无法弄明白。

2 个答案:

答案 0 :(得分:1)

您可以对错误代码0x800700c1进行反向工程。如果不是通过谷歌然后设计。 8使它成为一个错误。 7是“设施代码”,其中发生错误,7表示Windows。这使得最后4位数字成为Windows错误代码。 0x00c1 =错误193.您可以通过多种方式查找,一种是查看Windows SDK的WinError.h文件:

//
// MessageId: ERROR_BAD_EXE_FORMAT
//
// MessageText:
//
// %1 is not a valid Win32 application.
//
#define ERROR_BAD_EXE_FORMAT             193L

在64位操作系统上总是生成的错误代码。运行64位代码并尝试加载旧版32位ActiveX组件。

这表明了简单的解决方法:在解决方案资源管理器窗口中右键单击您的EXE项目。 “属性”,“编译”选项卡,向下滚动,“高级编译选项”按钮。将目标CPU设置更改为“x86”以强制您的VB.NET代码以32位模式运行,以便它可以加载该ActiveX控件。或者,如果已将其设置为x86,则将其更改为“AnyCPU”以处理这是64位ActiveX控件的奇怪机会。

如果组件的供应商不起作用或您有任何其他问题,请与该组件的供应商联系。

答案 1 :(得分:0)

我不知道你是否解决了这个问题。我解决它的方法是在我的电脑上安装vb6。我尝试了所有其他方式,但没有一个方法。这个API很老了。安装vb6解决了我的问题。此外,如果您希望该计划有效,您必须登录英镑交易员亲。祝你好运。