急:VC6编写DLL里,怎么给函数传递字符串类型的参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急:VC6编写DLL里,怎么给函数传递字符串类型的参数相关的知识,希望对你有一定的参考价值。
小弟正在编写一款 文件和文件夹加密的软件,由于某些原因,准备将实现加密的逻辑代码用DLL的形式集成。也就是说,这个DLL负责着对单个文件或一个文件夹的加密。
可是,碰到了这样的问题,无论我向DLL的导出函数传递CString型的还是LPCTSTR型的参数,总是只接收到了字符串的头一个字符,比如向其传递“abc“,只收到了"a",这样的话,将文件加密以后,用任何一个首个字符为“a”的字符串作为密码,即可以解密。显然达不到要求。
下面是我完整的导出函数的声明:
extern "C" __declspec(outport) __int64 TurnPwd(LPCTSTR lpPwdSet,UINT nFlag);
__declspec(outport)这里,不知道写得对不对,我现在在网吧,不记得写了
而第二个参数lpPwdSet,无论传递什么字符串,也无论是LPCTSTR的还是CString的,都只接收传进来的第一个字符。
求各位高人指导一下,VC6写的DLL,怎么接收传进来的字符串,又怎么在这个函数里还原成字符串进行处理,谢谢!
满意可加分。
int WINAPI icePub_encryptFile(char *strFilename, char *strOutputFilename, char *strKey)
输入:strFilename 待加密文件名
strOutputFilename 加密后文件名
strKey 密钥,任意长度
输出:
返回码:
Char key[128];
strcpy(key,"11223344");
typedef int (WINAPI ICEPUB_ENCRYPTFILE)(char *strFilename, char *strOutputFilename, char *strKey);
ICEPUB_ENCRYPTFILE *icePub_encryptFile = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
icePub_encryptFile=(ICEPUB_ENCRYPTFILE *)GetProcAddress(hDLLDrv,"icePub_encryptFile");
if(icePub_encryptFile)
icePub_encryptFile("e:\\a.jpg","e:\\a.dat",key);
if(hDLLDrv)
FreeLibrary(hDLLDrv);
参考资料:http://bbs.icese.net/icepubdll/icePubDLL%bd%d2%c3%d820110624.pdf
将 Array 传递给 XLPagerTabBar 委托函数以打开 VC
【中文标题】将 Array 传递给 XLPagerTabBar 委托函数以打开 VC【英文标题】:Pass Array to the XLPagerTabBar delegate function to open VC 【发布时间】:2018-06-05 07:21:10 【问题描述】:我正在使用第三方库 XLPagerTabBarStrip
。它有委托
override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController]
现在我正在尝试传递包含情节提要标识符名称的数组。我正在运行 for 循环以获取名称,然后将其传递给我的 return 语句。当我运行应用程序时,它只显示数组的最后一项。如何将所有数组项传递给 return 语句?我的代码是这样的,
var child1 = UIViewController()
override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController]
let viewController = ["LoggedInVC","RegisterationVC"]
for items in viewController
child1 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: items)
return [child1]
当我运行应用程序时,它只显示标识符为 RegisterationVC
的 vc。如何同时显示两者?
【问题讨论】:
【参考方案1】:您的var child1
是UIViewController
类型,每次执行循环时都会覆盖此变量。
你需要的是一个UIViewController
的数组
试试这个:
override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController]
var childs = Array<UIViewController>()
let viewControllers = ["LoggedInVC","RegisterationVC"]
for item in viewControllers
childs.append(UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: item))
return childs
【讨论】:
如果我有动态数组,可以用这种方法吗? @Teetz @raheem 你对动态数组的具体含义是什么? (如果您想提供更多信息,可以编辑您的问题) 不,我只是想问如果我有动态数组,那么这个方法可以写吗? @Teetz 只需根据您想要实现的目标填写您需要的标识符数组。以上是关于急:VC6编写DLL里,怎么给函数传递字符串类型的参数的主要内容,如果未能解决你的问题,请参考以下文章
用C语言如何写DLL动态链接库?VB.net 又如何调用其生成的DLL库?急急急!!!!在线等!!
delphi将pchar类型的变量传递给vc编写的dll问题,但是返回来的始终是一样的
血本急求:将对话框放入 DLL 文件当中,在主程序中作为子窗口非模态显示,做完操作后,释放该 DLL 的方法