#define DebugPrint(x, y) \
{ \
char *MACROmsg; \
char *MACROprint; \
MACROmsg = (char *) malloc (1056); \
MACROprint = (char *) malloc (1056); \
sprintf_s(MACROmsg, 1056, "%ws", x); \
sprintf_s(MACROprint, 1056, MACROmsg, y); \
MessageBox(NULL, MACROprint, NULL, NULL); \
if(MACROprint) free(MACROprint); \
if(MACROmsg) free(MACROmsg); \
}
BOOL APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
BOOL bRtn;
DebugPrint(L"%d\t%ws(0x%08X, 0x%08X, %i, \"%ws\")\0", (2, L"a", 4, 4, 4, L"a"));
DebugPrint(L"%d\t%s(0x%08X, 0x%08X, %i, \"%s\")\0", (2, "a", 4, 4, 4, "a"));
...
你好。我很抱歉因为沮丧而提出问题,但我已经查看了我的代码并将其更改为从这个开始。第一行执行得很好,第二行没有。似乎第二个 %s 在 output.c 中存在问题(Microsoft 的 sprintf 代码)。指针变为空。我会认为他们的代码是完美的,错误在于我的,但我看不到它。
我非常怀疑我是否设法更改了该文件的代码并在它被锁定时意外地重新编译了它,并且我会收到一条警告我的消息。
正在从 C++ .net 应用程序调用 DLL。我也无法想象故障在这里。
我有几个全局变量,如果初始化它们只会初始化为 NULL。它们没有被引用。至少可以说我很沮丧,我不知道还能去哪里看。也许有人遇到了类似的事情,或者想到了问题可能或什至是什么。
非常感谢。
我正在使用 Visual C++ 2008。
ps 代码不同(我通常不会考虑使用 sprint_s(..., "%ws", x) 但那个也导致错误。我希望这段代码没问题,我只是可以'不明白。非常感谢。