This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DDC1128EVM:在C++ Visual Studio 2013和2015上的DDC1.1128万EVM上执行USB_IO_for VB6时发生访问冲突

Guru**** 1199480 points
Other Parts Discussed in Thread: DDC1128EVM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/568700/ddc1128evm-access-violation-executing-usb_io_for_vb6-on-the-ddc11128evm-on-c-visual-studio-2013-and-2015

部件号:DDC1128EVM

大家好,我是A. Salas。

尽管使用Visual Basic,我在"DLL User Guide for DDC1128EVAL module.pdf"的帮助下成功运行了USB_IO_for VB6.dll来执行WriteFPGARegsC等功能,但我无法在Visual Studio 2013或2015中使用C++来执行它。

我想知道是否有人做过这件事,并可以提供一个例子。 如果有头文件和lib文件要添加到C++项目中,这应该是一个容易的过程,但TI似乎不提供这些文件。 这使得C++的使用更加复杂。

为了详细说明错误,我将提供更多详细信息:

我收到以下错误:  

"在DDC1128EVM.exe中0x1.0001万B92 (USB_IO_FOR_VB6.dll)抛出异常:0xc0.0005万:访问冲突读取位置0x0万。 如果存在此异常的处理程序,则可以安全地继续运行该程序。"

我尝试使用Visual Studio社区2013和Visual Studio社区2015时遇到了相同的错误。

要加载DLL,请使用 LoadLibrary(DllPath);

如果成功,则使用 GetProcAddress()在DLL中找到函数的地址;

这也是成功的,因为GetProcAddress()返回的地址与使用此处提到的名为 “Dependency Walker”的第三方应用程序显示的地址匹配。

因此,在成功加载DLL并成功检索要运行的函数的地址后, 我尝试执行该函数,并且得到了DLL地址上的访问冲突错误。

下面是我用来加载DLL的代码示例:

这是代码中的其他部分:  


typedef int(*XferINTDataIn_def)(int *USBdev, int *INTData, Long *DataLength);

extern "C" int XferINTDataIn(int *USBdev, int *INTData, Long *DataLength);

以下是抛出异常的位置:

void CDDC1128EVMDlg::OnBnClickedButton2()
{
	CString str;

	HINSTANCE hResDDC1Message128DLL = NULL;
	LPCTBox DllPath (_T)(C:\\src\vs2013\libs\\DDC1128\\USB_IO_for_DD1DLL
	
	
	
		
		
	
	

	
		
		
		
		
		
		
			)1128) GetxDataStr128Inf =<DxDDxD,地址=<D1=
			int dataread[10]={0};
			int transfered(0);
			transfered = xferInt(0),dataread,&DataLength_long;
			//int __stdcall XferINTDataIn(int *USBdev, int *INTData, Long *DataLength);
			//int respVal(0);
			str.Format(_T("tranfered:%d"), transfered);
			AfxMessageBox (str);
		}
		FreeLibrary(hResDDC1128DLL);
	}

下面是 依赖关系查看器如何显示函数的地址的图像,以及错误和代码的图像。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,


    我要将此帖子移到支持此设备的医学论坛。 我确信您可以在此处找到答案。


    吴若瑟