1

我是 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

End Class

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

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

这是什么意思,我该如何纠正?当我调试时,它突出显示“m_STIEvents = New STIEvents”作为出现问题的行,但我无法弄清楚。

4

2 回答 2

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 控件的奇怪机会。

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

于 2012-09-13T23:05:39.863 回答
0

不知道你有没有解决这个问题。我解决它的方法是在我的电脑上安装 vb6。我尝试了所有其他方法,但没有一个有效。这个 API 已经很老了。安装 vb6 解决了我的问题。此外,如果您希望程序正常运行,您必须登录 sterling trader pro。祝你好运。

于 2013-11-13T04:10:02.417 回答