VB调用VC的dll异常~异常代码48~dll加载不成功~呜呜求大神指导~感激涕零
VB调用VC的dll错误~~错误代码48~dll加载不成功~~呜呜求大神指导~感激涕零
用vc做了一个dll,给vb调用,一开始在我电脑上是好的,转到做VB的那人电脑上调用就不行了,始终报错48.
1,首先可以肯定,dll的地址设置正确
2,我用查看dll的插件depends打开了dll,里面相关的dll都是正常显示,没有缺失任何的dll.
vc的代码大体如下:
#include "StdAfx.h"
#include "test.h"
#include "cv.h"
#include "highgui.h"
#include "SiftGxyView.h"
#define M_SIFT_YUZHI 1
int nCount = 0; //nCount 统计数据库中样本图片的数量
char *buf=NULL;
CString taibiao_result="";//
CDatabase DBCON;
CString DSN = "ODBC;DSN=TVLogo";// ODBC中添加数据源的名称
CRecordset m_rSet;
CString m_strsql;
extern "C" CPoint EXPORT _stdcall CStingToPoint(CString strTemp)
{
。。。。
}
extern "C" int EXPORT _stdcall SIFT(IplImage* pic1 = NULL,IplImage* pic2 = NULL) {
。。。
。。。
}
extern "C" BSTR EXPORT _stdcall CheckPhoto(char *path_taibiao1=NULL)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
nCount=0;
CString path_taibiao=path_taibiao1;//
if (path_taibiao=="")
。。。。
。。。
m_rSet.Close();
DBCON.Close();
buf = (LPSTR)(LPCTSTR)taibiao_result;
return (BSTR)buf;
return NULL;
}
希望能得到大神们的赐教~~~
------解决方案--------------------
vb、vc的dll到底是怎么协议,俺一直也没搞清楚,以前自己用的时候,没在dll中用CString做过参数,也没有使用过 参数 = NULL这种方法。
------解决方案--------------------
CString是MFC类,VB中不支持吧
------解决方案--------------------
VB可以尝试独占打开结果文件,成功就说明VC计算完了。
参考
用vc做了一个dll,给vb调用,一开始在我电脑上是好的,转到做VB的那人电脑上调用就不行了,始终报错48.
1,首先可以肯定,dll的地址设置正确
2,我用查看dll的插件depends打开了dll,里面相关的dll都是正常显示,没有缺失任何的dll.
vc的代码大体如下:
#include "StdAfx.h"
#include "test.h"
#include "cv.h"
#include "highgui.h"
#include "SiftGxyView.h"
#define M_SIFT_YUZHI 1
int nCount = 0; //nCount 统计数据库中样本图片的数量
char *buf=NULL;
CString taibiao_result="";//
CDatabase DBCON;
CString DSN = "ODBC;DSN=TVLogo";// ODBC中添加数据源的名称
CRecordset m_rSet;
CString m_strsql;
extern "C" CPoint EXPORT _stdcall CStingToPoint(CString strTemp)
{
。。。。
}
extern "C" int EXPORT _stdcall SIFT(IplImage* pic1 = NULL,IplImage* pic2 = NULL) {
。。。
。。。
}
extern "C" BSTR EXPORT _stdcall CheckPhoto(char *path_taibiao1=NULL)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
nCount=0;
CString path_taibiao=path_taibiao1;//
if (path_taibiao=="")
。。。。
。。。
m_rSet.Close();
DBCON.Close();
buf = (LPSTR)(LPCTSTR)taibiao_result;
return (BSTR)buf;
return NULL;
}
希望能得到大神们的赐教~~~
------解决方案--------------------
vb、vc的dll到底是怎么协议,俺一直也没搞清楚,以前自己用的时候,没在dll中用CString做过参数,也没有使用过 参数 = NULL这种方法。
------解决方案--------------------
CString是MFC类,VB中不支持吧
------解决方案--------------------
VB可以尝试独占打开结果文件,成功就说明VC计算完了。
参考
Private Sub Command1_Click()'找出文件夹内文件最新的更新时间(包括里面的子文件夹的文件哈) 要把这个文件夹内的所有文件的最后修改时间都要检查一次,并取出近的一个时间,(主要是检查这个文件夹里面的内容有没有更新),并取出这个文件最后一次的更新时间.环境是VB6
Dim after As Double
Dim f As Integer
Dim dn As String
Dim fn As String
Dim ft As String
Dim ft_date As Date
Command1.Enabled = False
On Error GoTo ERR0
Kill "c:\files.txt"
dn = "c:\windows"
On Error GoTo ERR1
Shell ("cmd /c dir " & dn & "\*.* /a-d /b /s /o-d >c:\files.txt")
after = Now + 60# / 3600# / 24#
f = FreeFile()
Do
REOPEN1:
DoEvents
If Now > after Then
MsgBox "Wait c:\files.txt 60s overtime!"
Exit Sub
End If
Open "c:\files.txt" For Input Lock Read Write As #f
Line Input #f, fn
Close #f
Exit Do
Loop
On Error GoTo ERR0
Kill "c:\files.txt"
On Error GoTo ERR2
Shell ("cmd /c dir " & Chr(34) & fn & Chr(34) & ">c:\files.txt")