// cplusplus.cpp : Defines the entry point for the DLL application.
//
#include "cplusplus.h" #include <windows.h> //#ifdef _MANAGED
//#pragma managed(push, off)
//#endif
BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } //文本数据结果
typedef struct CData{ char m_szText[MAX_LEN]; int m_nLen; }CData; CData g_csData; //二进制数据结构
typedef struct CBinData { int nNum; int nAge; short nHeight; }CBinData; /************************************************************************/ /* *功能 * 加法运算 *参数 * i in 加数 * j in 被加数 *返回值 * 两数之和 */ /************************************************************************/ int Add(int i,int j) { return i + j; } #include <stdio.h> /************************************************************************/ /* *功能 * 取出组件中当前的文本及文本长度值 *参数 * szText out 保存文本的缓冲区 * pnLen out 保存文本长度的地址 * in szText缓冲区的最大长度 *返回值 * E_OK 调用成功 * E_FAILED 调用失败 */ /************************************************************************/ ECODE GetText(char* szText,int* pnLen) { char szTemp[MAX_LEN*2] = {0}; if ( *pnLen > g_csData.m_nLen) { return E_FAILED; } sprintf(szTemp,"GetText %s = %d\n",szText,*pnLen); printf(szTemp); memcpy(szText,g_csData.m_szText,g_csData.m_nLen); *pnLen = g_csData.m_nLen; return E_OK; } /************************************************************************/ /* *功能 * 设置组件中当前的文本内容及长度 *参数 * szText in 文本缓冲区 * nLen in 文本长度 *返回值 * E_OK 调用成功 * E_FAILED 调用失败 */ /************************************************************************/ ECODE SetText(char* szText,int nLen) { if ( nLen > 0 && nLen < MAX_LEN) { char szTemp[MAX_LEN*2] = {0}; memcpy(g_csData.m_szText,szText,nLen); g_csData.m_nLen = nLen; sprintf(szTemp,"SetText %s = %d\n",szText,nLen); printf(szTemp); return E_OK; }
return E_FAILED; } /************************************************************************/ /* *功能 * 获取组件中二进制数据 *参数 * pData in 保存二进制数据的地址 * pnLen in 二进制缓冲区地址 *返回值 * E_OK 调用成功 * E_FAILED 调用失败 */ /************************************************************************/ ECODE GetBinData(char* pData,int* pnLen) { CBinData g_bdData; if ( *pnLen < sizeof(CBinData)) { return E_FAILED; } g_bdData.nNum = 123456L; g_bdData.nAge = 789L; g_bdData.nHeight = 654321L; memcpy(pData,&g_bdData,sizeof(CBinData)); *pnLen = sizeof(CBinData); printf("*pnLen = %d\n",*pnLen); return E_OK; }
|