小编Ben*_*n T的帖子

MSVC名称错误

我正在尝试使用MSVC 2015 x86构建Lua和QtLua,我遇到了导出/导入符号的问题.

这是我为建筑Lua 5.3.2做的事情(来源):

cl /MD /O2 /c /DLUA_BUILD_AS_DLL *.c
ren lua.obj lua.o
ren luac.obj luac.o
link /DLL /IMPLIB:lua5.3.2.lib /OUT:lua5.3.2.dll *.obj 
link /OUT:lua.exe lua.o lua5.3.2.lib 
lib /OUT:lua5.3.2-static.lib *.obj
link /OUT:luac.exe luac.o lua5.3.2-static.lib
Run Code Online (Sandbox Code Playgroud)

到目前为止,它的工作原理和依赖性walker显示函数在没有任何修改的情况下导出.

然后我使用cmake构建QtLua,我有大约100个错误,如:

error LNK2019: unresolved external symbol _lua_close referenced in function "public: virtual __thiscall QtLua::State::~State(void)" (??1State@QtLua@@UAE@XZ)
Run Code Online (Sandbox Code Playgroud)

所以基本上我的问题是DLL导出lua_close和链接器寻找_lua_close.

经过一些搜索后,_lua_close格式似乎是合法的,因为Microsoft文档声明调用的C符号__cdecl带有'_'前缀.

但是,我不明白为什么DLL导出未编码的名称.

在Lua(C文件)中编译时的函数声明

__declspec(dllexport) void (lua_close) (lua_State *L);
Run Code Online (Sandbox Code Playgroud)

在QtLua(C++文件)中编译时的函数声明

extern "C" {
  extern void (lua_close) (lua_State *L);
}
Run Code Online (Sandbox Code Playgroud)

c c++ linker name-mangling visual-c++

6
推荐指数
1
解决办法
489
查看次数

如何添加到联系人的新联系人时,如何添加类似whatsapp的选项

我开发了一个需要做两件事的应用程序:

  • 创建一个用户帐户(如WhatsApp).
  • 每当有新的联系人条目时,如果联系人正在使用我的应用程序,则立即在联系人应用程序中显示联系人详细信息页面中的"呼叫"或"消息"选项.

android android-syncadapter android-contacts android-account android-contact-mimetype

6
推荐指数
1
解决办法
3571
查看次数