我是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”作为出错的行,但我无法弄明白。
答案 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解决了我的问题。此外,如果您希望该计划有效,您必须登录英镑交易员亲。祝你好运。