vb写的DLL名为check.dll 其中有函数FreeCode("102"),返回值0 或 1;我在程序这样写
typedef bool (*FUNC)(CString);
FUNC func;
HINSTANCE hLibrary=::LoadLibrary("CHECK.DLL");
if(hLibrary)
{
func=(FUNC)::GetProcAddress(hLibrary,"FreeCode");
if(func("102")) //出错 a
{
....
}
}
在执行到if(func("102"))出错,提示"unhandled exception in
loginexe::ox0000005:access violation"
func的值总是=0;这样也不行.
include <ole2.h>
#include <comutil.h>// 指示链接 comsupp.lib 库. 这个库是 comutil.h 需要的.
#pragma comment(lib, "comsupp.lib")// #import 预处理指令导入指定的类型库.
#import "e:\debug\check.dll"int main()
{
//初始化 COM
CoInitialize(NULL); //创建智能指针对象, 用 ProgID "check.Class1" 作为构造函数参数.
check::_Class1Ptr ptrclass1("check.Class1");
if (ptrclass1 != NULL) { //调用方法
ptrclass1->Hello();
//注意, 在使用完后, pclass1 不需要调用 Release, 因为它是智能指针,
} CoUninitialize();
}编译时提示check.tlh错,少; 为何. 那为高人知道DLL如何注册。
typedef bool (*FUNC)(CString);
FUNC func;
HINSTANCE hLibrary=::LoadLibrary("CHECK.DLL");
if(hLibrary)
{
func=(FUNC)::GetProcAddress(hLibrary,"FreeCode");
if(func("102")) //出错 a
{
....
}
}
在执行到if(func("102"))出错,提示"unhandled exception in
loginexe::ox0000005:access violation"
func的值总是=0;这样也不行.
include <ole2.h>
#include <comutil.h>// 指示链接 comsupp.lib 库. 这个库是 comutil.h 需要的.
#pragma comment(lib, "comsupp.lib")// #import 预处理指令导入指定的类型库.
#import "e:\debug\check.dll"int main()
{
//初始化 COM
CoInitialize(NULL); //创建智能指针对象, 用 ProgID "check.Class1" 作为构造函数参数.
check::_Class1Ptr ptrclass1("check.Class1");
if (ptrclass1 != NULL) { //调用方法
ptrclass1->Hello();
//注意, 在使用完后, pclass1 不需要调用 Release, 因为它是智能指针,
} CoUninitialize();
}编译时提示check.tlh错,少; 为何. 那为高人知道DLL如何注册。
要按照com的方式来调用!