2013-07-24 89 views
1

我想在PocketPC 2003的项目中使用setlocale函数。在此之前,我做了一些简单的测试,在一个单独的控制台应用程序项目中替换了一些字符。在comsole中,应用程序项目功能工作得很好,对她没有任何问题。setlocale有错误LNK2019

对第一个项目使用同样的功能我有一些问题。插入<clocale>我有以下错误:

error C2143: syntax error : missing '{' before ':' 
error C2059: syntax error : ':' 

更改<clocale><locale.h>我有链接错误:

error LNK2019: unresolved external symbol __imp_setlocale referenced FILE: Utils.obj 
fatal error LNK1120: 1 unresolved externals Pocket PC 2003 

<locale.h><clocale>没有与之相关LIB文件。在这种情况下发生了什么?

+1

也许试着用'extern“C'{'''''包装'#include'? –

+0

@Drew了解。你是对的。现在包装文件我得到另一个错误:错误C2059:语法错误:'字符串'。我已经更改了cpp的文件扩展名,问题仍然存在。 – learner

+1

请给我们的代码。 – 0x499602D2

回答

1

您正面临C vs C++链接问题。 C和C++具有非常不同的方式来链接名称。

为了告诉你的C++编译器,头被认为具有C忙玲的风格,你应该添加以下代码:

extern "C" { 
    // Some C code, headers inclusion etc... 
} 

您可以通过谷歌搜索有什么联系和在C/C重整了解更多++ 。

+0

好的。现在包装文件我得到另一个错误:错误C2059:语法错误:'字符串'。我已经更改了cpp的文件扩展名,问题仍然存在。我在我的文件中有stdio.h。在extern之前插入之前的问题。插入后,我有相同的错误加上与FILE *,fp – learner

+0

相关的其他人请提供更多关于语法错误的信息。给我们在哪里。你有没有尝试使用'#include '。但无论如何,如果你使用C++,你应该使用'#include '并修复你的语法错误 – mathk

+0

我会尝试。 PocketPC的包含目录中不存在。这些文件是。这是如何使用的extern “C”{ \t的#include \t的#include } 这些是错误产生: 错误C2059:语法错误: '字符串' 错误C2065:FILE':未声明的标识符 错误C2065:FP:未声明的标识符 错误C2106:“=”:左操作数必须是1-值 错误C2065:FP:未声明的标识符 错误C2065:FP:未声明的标识符 是否有任何信息需要提供吗? – learner