有没有办法让我使用来自VB6应用程序的dll而没有头文件的VSC ++? 我有dll和.lib,并且正在尝试执行以下操作来加载dll。
FunctionCalledType calledPTR = NULL;
hDLL = LoadLibrary(_T("called.dll"));
if (hDLL == NULL) {
std::cerr << "DLL called.dll could not be found!";
return 2;
}
calledPTR = (FunctionCalledType)GetProcAddress(hDLL, "FunctionCalled");
if (NULL != calledPTR)
{
std::cout << "Got Function";
calledPTR("fileA.bz", "fileA.txt");
}
else{
std::cerr << "Didn't got function";
return 3;
}
return 0;
代码运行正常,但我在
上遇到了内存访问错误 calledPTR("fileA.bz", "fileA.txt");
其中FunctionCalledType定义如下:
typedef string(CALLBACK* FunctionCalledType)(string, string);
生成dll的VB6代码如下:
Public Function FunctionCalled(src As String, dest As String) As String
//Some code
End Function
我猜我的函数指针格式错误,或者我错误地包含了dll
答案 0 :(得分:1)
这些是VB6.dll的4个导出函数。
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
如果您的代码在类模块中,则基于VB6的类模块创建对象,然后将该函数作为方法调用。
你不想学习COM很好。这种工作几乎没有机会。