ОК, поэтому у меня есть проект C ++, который компилируется в файл DLL.Я могу ссылаться на этот файл в C # и видеть / использовать все объекты и функции в файле DLL.Что мне нужно сделать, так это ссылаться на эти объекты и функции через VB6.
В коде C ++ нет ничего похожего на создание DLL.Модификаторов __declspec (dllexport) нет, только код C ++.
Существуют такие объекты:
String ^
Array^
Я не совсем уверен, что они есть.Мои знания C ++ не очень обширны, и я только кодировал C ++ для систем Linux, хотя от их использования они выглядят как указатели.Имеют ли эти объекты какое-либо отношение к DLL в C ++?
В любом случае, я могу добавить любые нужные мне обертки или добавить файл определения (.def), хотя я не знаю, какие обертки использовать, и яне знаю, как работает файл определения или как его нужно создать.
Любая помощь и / или предложения приветствуются.Если вы можете отослать меня к хорошей информации, это было бы полезно.Весь поиск, который я сделал, не помог.
Помните, мне нужно получить доступ ко всем функциям и объектам в этой C ++ DLL из VB6.
Спасибо.
РЕДАКТИРОВАТЬ: Добавлен файл .h и спецификация AssemblyInfo.cpp к вопросу
Я изменил некоторые имена в этих файлах, но структура такая же.Обратите внимание, что это ссылается на другие файлы, но я предполагаю, что если один из них можно заставить работать, то другие могут с тем же процессом.Я вижу все объекты, но не методы:
//myDBObject.h
#pragma once
using namespace System;
namespace myDBNamespace {
#include "ProblemSolution.h"
public ref class MyDataBaseAccessor
{
public:
MyDataBaseAccessor();
static String ^ GetServiceVersion() { return sDLLVersion;};
int GetServiceStatus() { return myiDBStatus;};
String ^ GetMyVersion();
String ^ GetDBVersion();
String ^ GetDLLVersion();
String ^ GetExpireDate();
MyOtherObject ^ GetMyOtherObject();
int ProcessProblem(ProblemSolution ^ dsps);
private:
static MyDataBaseController ^ myDataBase;
static MyOtherObject ^ myObjs;
static MyDataset ^ myDS;
static String ^ myDBPath;
static String ^ sDLLVersion = "0.01";
static String ^ sReqDBVer = "0.01";
static int myiDBStatus;
static bool myBoolean, myOtherBoolean, mybNoChain;
};
}
Вот файл AssemblyInfo.cpp:
#include "stdafx.h"
using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Runtime::InteropServices;
using namespace System::Security::Permissions;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly:AssemblyTitleAttribute("My Product Title")];
[assembly:AssemblyDescriptionAttribute("")];
[assembly:AssemblyConfigurationAttribute("")];
[assembly:AssemblyCompanyAttribute("My Company")];
[assembly:AssemblyProductAttribute("My Product Name")];
[assembly:AssemblyCopyrightAttribute("My Copyright")];
[assembly:AssemblyTrademarkAttribute("My Program")];
[assembly:AssemblyCultureAttribute("")];
//
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the value or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly:AssemblyVersionAttribute("1.0.*")];
[assembly:ComVisible(true)]; //Here is the ComVisible tag. It was false and I set it to true
[assembly:CLSCompliantAttribute(true)];
[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = false)];