C:编译C++;C代码 我试图在C项目中导出一些C++代码… 实际上,我遇到了以下问题: _CreateToolhelp32Snapshot fnCreateToolhelp32Snapshot = (_CreateToolhelp32Snapshot) GetProcAddress(GetModuleHandleA(L"kernel32"), "CreateToolhelp32Snapshot"); _Thread32First fnThread32First = (_Thread32First) GetProcAddress(GetModuleHandleW(L"kernel32"), "Thread32First"); _Thread32Next fnThread32Next = (_Thread32Next) GetProcAddress(GetModuleHandleW(L"kernel32"), "Thread32Next");

C:编译C++;C代码 我试图在C项目中导出一些C++代码… 实际上,我遇到了以下问题: _CreateToolhelp32Snapshot fnCreateToolhelp32Snapshot = (_CreateToolhelp32Snapshot) GetProcAddress(GetModuleHandleA(L"kernel32"), "CreateToolhelp32Snapshot"); _Thread32First fnThread32First = (_Thread32First) GetProcAddress(GetModuleHandleW(L"kernel32"), "Thread32First"); _Thread32Next fnThread32Next = (_Thread32Next) GetProcAddress(GetModuleHandleW(L"kernel32"), "Thread32Next");,c++,c,memory-address,mingw32,initializer,C++,C,Memory Address,Mingw32,Initializer,我正在C编程的三个对象中保存三个函数(“CreateToolhelp32Snapshot”、“Thread32First”和“Thread32First”)的内存地址。。。我在Ubuntu13.04下使用mingw进行编译,出现以下错误: (row 1): error: initializer element is not constant (row 2): error: initializer element is not constant (row 3): error: initialize

我正在C编程的三个对象中保存三个函数(“CreateToolhelp32Snapshot”、“Thread32First”和“Thread32First”)的内存地址。。。我在Ubuntu13.04下使用mingw进行编译,出现以下错误:

(row 1): error: initializer element is not constant
(row 2): error: initializer element is not constant
(row 3): error: initializer element is not constant
我知道在C语言中,地址函数不被视为常量,但是找到解决这个约束的方法会非常有帮助


提前感谢您的建议…

您必须使用全局变量。在其他地方使用之前,请使用initialize函数设置这些值。在标准c中,在输入main之前不能执行代码(比如调用GetProcAddress函数)

_CreateToolhelp32Snapshot fnCreateToolhelp32Snapshot;
_Thread32First fnThread32First;
_Thread32Next fnThread32Next;

void initialize()
{
    fnCreateToolhelp32Snapshot = (_CreateToolhelp32Snapshot) GetProcAddress(GetModuleHandleA(L"kernel32"), "CreateToolhelp32Snapshot");
    fnThread32First = (_Thread32First)  GetProcAddress(GetModuleHandleW(L"kernel32"), "Thread32First");
    fnThread32Next = (_Thread32Next) GetProcAddress(GetModuleHandleW(L"kernel32"), "Thread32Next");
}

int main()
{
    initialize();
    ...
}

您必须使用全局变量。在其他地方使用之前,请使用initialize函数设置这些值。在标准c中,在输入main之前不能执行代码(比如调用GetProcAddress函数)

_CreateToolhelp32Snapshot fnCreateToolhelp32Snapshot;
_Thread32First fnThread32First;
_Thread32Next fnThread32Next;

void initialize()
{
    fnCreateToolhelp32Snapshot = (_CreateToolhelp32Snapshot) GetProcAddress(GetModuleHandleA(L"kernel32"), "CreateToolhelp32Snapshot");
    fnThread32First = (_Thread32First)  GetProcAddress(GetModuleHandleW(L"kernel32"), "Thread32First");
    fnThread32Next = (_Thread32Next) GetProcAddress(GetModuleHandleW(L"kernel32"), "Thread32Next");
}

int main()
{
    initialize();
    ...
}

GetProcAddress(GetModuleHandleW(L“kernel32”),“Thread32First”)
和其他是Win32 API函数,我认为你在Ubuntu中编译这些函数不会有任何运气。请展示一些真实的代码,实际的和未编辑的错误,并指出这些错误在代码中的位置。请编辑你的问题,不要发表评论。我真的不知道这里有什么C++的。你必须使用全局变量。在其他地方使用之前,请使用initialize函数设置这些值。在标准c中,在进入main之前不能执行代码(比如调用GetProcAddress函数)。@JoachimPileborg&Nemanja:MinGW为Linux主机/Windows目标提供了一个交叉编译器。在Linux上编程并使用交叉编译器构建Windows二进制文件是很常见的和其他是Win32 API函数,我认为你在Ubuntu中编译这些函数不会有任何运气。请展示一些真实的代码,实际的和未编辑的错误,并指出这些错误在代码中的位置。请编辑你的问题,不要发表评论。我真的不知道这里有什么C++的。你必须使用全局变量。在其他地方使用之前,请使用initialize函数设置这些值。在标准c中,在进入main之前不能执行代码(比如调用GetProcAddress函数)。@JoachimPileborg&Nemanja:MinGW为Linux主机/Windows目标提供了一个交叉编译器。在Linux上编程并使用交叉编译器构建Windows二进制文件是很常见的。