如何从EXE项目中引用类?

时间:2019-07-09 18:49:01

标签: vb6

我的任务是恢复VB6项目,自从我使用VB6以来已经太久了。

这是我的问题。

项目A是一个ActiveX EXE项目。在同一个项目组中,还有另一个ActiveX EXE项目。项目B。项目B包含项目A需要使用的ChartMogul.Customer.all(config, { status: 'Active', per_page: 200, page: page }, function (err, res) { if (err) reject(err); console.log(res); resolve(res.entries); }); ,例如:

{
  "entries":[
    {
      "id": 25647,
      "uuid": "cus_de305d54-75b4-431b-adb2-eb6b9e546012",
      "external_id": "34916129",
      "external_ids": ["34916129"],
      "data_source_uuid": "ds_610b7a84-c50f-11e6-8aab-97d6db98913a",
      "data_source_uuids": ["ds_610b7a84-c50f-11e6-8aab-97d6db98913a"],
      "name": "Example Company",
      "company": "",
      "email": "bob@examplecompany.com",
      "status": "Active",
      "lead_created_at": "2015-01-01T10:00:00-04:00",
      "free_trial_started_at": "2015-01-09T10:00:00-04:00",
      "customer-since": "2015-06-09T13:16:00-04:00",
      "city": "Nowhereville",
      "state": "Alaska",
      "country": "US",
      "zip": "0185128",
      "attributes":{
        "tags": ["engage", "unit loss", "discountable"],
        "stripe":{
          "uid": 7,
          "coupon": true
        },
        "clearbit":{
          "company":{
            "name": "Example Company",
            "legalName": "Example Company Inc.",
            "domain": "examplecompany.com",
            "url": "http://examplecompany.com",
            "category":{
              "sector": "Information Technology",
              "industryGroup": "Software and Services",
              "industry": "Software",
              "subIndustry": "Application Software"
            },
            "metrics":{
              "raised": 1502450000,
              "employees": 1000,
              "googleRank": 7,
              "alexaGlobalRank": 2319,
              "marketCap": null
            },
          },
          "person":{
            "name":{
              "fullName": "Bob Kramer"
            },
            "employment":{
              "name": "Example Company"
            }
          }
        },
        "custom":{
          "CAC": 213,
          "utmCampaign": "social media 1",
          "convertedAt": "2015-09-08 00:00:00",
          "pro": false,
          "salesRep": "Gabi"
        }
      },
      "address":{
        "address_zip": "0185128",
        "city": "Nowhereville",
        "country": "US",
        "state": "Alaska"
      },
      "mrr": 3000,
      "arr": 36000,
      "billing-system-url": "https:\/\/dashboard.stripe.com\/customers\/cus_4Z2ZpyJFuQ0XMb",
      "chartmogul-url": "https:\/\/app.chartmogul.com\/#customers\/25647-Example_Company",
      "billing-system-type": "Stripe",
      "currency": "USD",
      "currency-sign": "$"
    },
    {"...49 more...": "...entries..."}
  ],
  "has_more": true,
  "per_page": 50,
  "page": 1,
  "current_page": 1,
  "total_pages": 4
}

当我尝试将Project B的输出exe(而不是vbp)添加到Project A的引用中时,出现错误clsCommon (clsCommon.cls)

有人可以提醒我如何在EXE中引用类吗? (在输出为ActiveX DLL的项目组中的项目中引用类时,我没有遇到任何麻烦

顺便说一句:我认为这甚至是可能的,因为20年前的某些开发人员显然已经进行了这项工作。

2 个答案:

答案 0 :(得分:5)

VB6不允许您从加载到同一IDE(项目组)的项目(ProjectA)中添加对ActiveX Exe(您的ProjectB)的引用。尝试时会显示错误。

这是因为ActiveX Exe是作为单独的进程运行的,我相信VB6 IDE不能对组中的单独项目进行处理。因此,虽然看起来您正在添加对ProjectB exe的引用,但由于它在组中,因此VB6实际上正在添加对ProjectB vbp的引用,这不受支持。

您需要从组中删除ProjectB。然后,您将可以从ProjectA IDE引用ProjectB Exe。

如果需要在IDE中运行ProjectB(用于调试或开发),请首先启动VB6并加载ProjectB。然后启动VB6的第二个实例并加载ProjectA。启动ProjectB时,您会注意到ProjectA中的引用从ProjectB Exe更改为ProjectB vbp(在第二个IDE中运行)。适当地在ProjectB中设置断点,然后在启动ProjectA并实例化ProjectB并进行方法调用时,将在该IDE中运行ProjectB代码。

答案 1 :(得分:3)

(注意-我已经修改了一部分)


对于组内的VB6项目,您应该能够使用通常的“引用”窗口(除EXE项目之外)向组中的其他项目添加相互引用。

我用一对测试EXE / DLL项目尝试了此操作,当我尝试在组中添加EXE引用时出现错误:

enter image description here

(由于项目类型为EXE,因此无法引用test1.vbp。)


但是,我可以引用DLL项目中没有问题的已编译EXE。这可能是您前进的最佳方式。

为了注册已编译的EXE,VB6会在您进行编译时为您执行此操作,但是我最终还记得有一个手动方法-您需要使用{{1 }}开关。

假设您的.VBP已经具有正确的条目(基本上是指向EXE和/或某些DLL和OCX文件的GUID的参考行),则应在执行以下操作时自动找到EXE中的类:您编译/运行。

其他一些SO问题在detali中对此进行了描述,因此我将不再重复所有这些事情:


如果您需要从DLL组中调试到EXE,请首先确保已连接所有引用。然后,您应该能够在IDE中运行EXE项目,设置断点,并在另一个IDE实例中分别运行DLL组并在它们之间进行调试。