【发布时间】:2015-03-21 22:13:04
【问题描述】:
我有以下情况。 我正在从 IBM Notes 应用程序 (Lotusscript) 调用 DLL 中的函数。
其中一个函数使用类型结构,我们在 64Bit 上遇到问题。 TYPE中的所有值只能传递给函数ByRef,但是我需要传递值ByVal。
所以我决定在函数头中为每个值设置单个参数。到目前为止,一切都很好。我有大约 43 个参数,但 LS 只能处理 31 个 ...
下一个想法是在调用注册新用户的函数之前调用即 INIT_REG_PERSON_INFO(arg1,arg2, ... )。
INIT_REG_PERSON_INFO(arg1,arg2, ... );
INIT_REG_ID_INFO(arg1,arg2, ... );
REGISTER_USER();
在 C 中,我有一个函数(我知道,只有一个参数,但仅用于测试)
/*====================================================================================*/
/* FUNCTION: BCC_InitRegPersonInfo */
/*====================================================================================*/
STATUS LNPUBLIC BCC_InitRegPersonInfo(char *FirstName){
try {
//extern char *REG_PERSON_INFO_FIRSTNAME;
memset(®_person_info, 0, sizeof (reg_person_info));
reg_person_info.FirstName = FirstName;
return NOERROR;
} catch (...) {
LogEventText("* BCC_InitRegPersonInfo::Exception *", NULLHANDLE, NOERROR);
return 1;
}
}
reg_person_info 被声明为全局变量
REG_PERSON_INFO reg_person_info;
稍后,在我的 REGISTER_USER() 中,我尝试从全局变量中访问值
LogEventText("* BCC_RegNewPerson1():reg_person_info.FirstName = %s", NULLHANDLE, NOERROR,
reg_person_info.FirstName);
但该值始终为空。我假设,一旦我退出 INIT_REG_PERSON_INFO(arg1,arg2, ... ); ,变量就会被删除/重置;
如何使函数调用之间的值保持不变?
【问题讨论】:
-
你最初在哪里声明
reg_person_info?你能发布那段代码/文件吗? -
你的“C”函数显然不是 C 而是 C++。
-
如果这确实是一个全局变量,并且您不玩共享库的加载和卸载游戏,则该值必须在程序的同一运行期间保持不变。