我有一些C ++代码,可以捕获原始图像并构建一个BMP,并将其保存到文件xyz.bmp中。效果很好。
但是,目标是将图像数据直接传输到VB6应用程序,这样就不会写出任何中间文件。
通过示例或清晰的解释,我根本找不到很多东西,而我的C ++充其量只是粗略的。
C ++ DLL代码:
extern "C" _declspec(dllexport) HRESULT CaptureSample(BYTE *pbByteArray, int *pnSize)
{
....
....
std::string bmpFile = "data/fingerPrint_" + s.str() + ".bmp";
MessageBox(0, L"Saving", L"title", MB_OK);
BmpSetImageData(&bmp, data, width, height);
BmpSave(&bmp, bmpFile);
const int nSizeOfData = sizeof(bmp);
*pnSize = min(nSizeOfData, *pnSize);
::memcpy(pbByteArray, bmp, *pnSize);
在上面,我有pbByteArray
和pnSize
将返回到VB6应用程序。
函数BmpSave
正常工作。
这是我接下来要坚持的接下来的几行代码。 ::memcpy .. bmp
无效-“没有来自SBmpImage的合适的转换功能”。
在VB6端:
Public Declare Function CaptureSample Lib "ImageLibrary.dll" (ByVal FScan As Byte, ByVal FScanSize As Integer) As Long
Private Sub Command_Click()
Dim FScan As Byte
Dim FScanSize As Integer
Call CaptureSample(FScan, FScanSize)
再次不确定这是正确的方法。
任何帮助将不胜感激。