我对C ++很新,并且有一个可能很明显的问题。我可以使用MSDN示例安装服务(http://msdn.microsoft.com/en-us/library/ms682450%28v=VS.85%29.aspx),如果我在一个独立的程序中
我正在尝试将其作为一个函数添加到另一个项目中,并且在传递名称,二进制路径等所需的LPCTSTR字符串时遇到问题。
到目前为止,我已经尝试过:
int Install(LPCTSTR serviceName, LPCTSTR serviceDisplayName, LPCTSTR servicePath);
我知道这是错的,但我很难找到我应该使用的确切内容。即使是指向解释的链接也没问题。谢谢!
答案 0 :(得分:3)
LPCTSTR是
long pointer to const text string
取决于您是否需要
目标UNICODE / MBCS / ANSI构建const char*
(ANSI / MBCS)const wchar_t*
(UNICODE)(来自记忆)
答案 1 :(得分:2)
这是一个支持Unicode或非Unicode构建的示例。请注意,您希望定义UNICODE
和_UNICODE
在Unicode版本中正常工作。在_T
宏中包装所有文本字符串。
#include <windows.h> /* defines LPCTSTR and needs UNICODE defined for wide build. */
#include <stdio.h>
#include <tchar.h> /* defines _T, _tprintf, _tmain, etc. and needs _UNICODE defined for wide build. */
int Install(LPCTSTR serviceName, LPCTSTR serviceDisplayName, LPCTSTR servicePath)
{
_tprintf(_T("%s %s %s\n"),serviceName,serviceDisplayName,servicePath);
return 0;
}
int _tmain(int argc, LPTSTR argv[])
{
int i;
LPCTSTR serviceName = _T("serviceName");
LPCTSTR serviceDisplayName = _T("serviceDisplayName");
LPCTSTR servicePath = _T("servicePath");
for(i = 0; i < argc; i++)
_tprintf(_T("argv[%d] = %s\n"),i,argv[i]);
Install(serviceName,serviceDisplayName,servicePath);
return 0;
}
答案 2 :(得分:1)
如果您已经拥有LPCTSTR
,那么您只需将该函数称为:
int result = Install(serviceName, serviceDisplayName, servicePath);
LPCTSTR是指向const TCHAR字符串的长指针,因此通常为const char *
或const wchar_t *
,具体取决于您的unicode设置。因此,您可以使用许多常用方法来处理C字符串,以及Microsoft提供的任何方法(我相信MFC有一些字符串类/函数)。