
20.02.2009, 13:11
|
|
Флудер
Регистрация: 12.08.2004
Сообщений: 3,791
С нами:
11444066
Репутация:
2290
|
|
Блин, ну ты и геморойщик.
Слабо было использовать просто функцию, а не запускать программу, использующую эту функцию?
|
|
|

20.02.2009, 13:13
|
|
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
С нами:
9185589
Репутация:
128
|
|
переделал, просто искал, где она определена,
вобщем, #include <sys/utsname.h>
Еще раз спасибо 
Последний раз редактировалось ss88; 20.02.2009 в 13:15..
|
|
|

20.02.2009, 14:11
|
|
Участник форума
Регистрация: 27.04.2008
Сообщений: 224
С нами:
9494306
Репутация:
313
|
|
Недавно занялся C++(совсем недавно), и сегодня попытался написать обычную работу с сокетами - открытие порта и его прослушиваение. Подключил winsock2.h, вроде сделал все как нужно, но на вызове функции socket компилятор выдаёт ошибку.
1>------ Build started: Project: test, Configuration: Debug Win32 ------
1>Compiling...
1>test.cpp
1>Linking...
1>test.obj : error LNK2028: unresolved token (0A00000F) "extern "C" unsigned int __stdcall socket(int,int,int)" (?socket@@$$J212YGIHHH@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
1>test.obj : error LNK2028: unresolved token (0A000010) "extern "C" int __stdcall WSAStartup(unsigned short,struct WSAData *)" (?WSAStartup@@$$J18YGHGPAUWSAData@@@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
1>test.obj : error LNK2019: unresolved external symbol "extern "C" unsigned int __stdcall socket(int,int,int)" (?socket@@$$J212YGIHHH@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
1>test.obj : error LNK2019: unresolved external symbol "extern "C" int __stdcall WSAStartup(unsigned short,struct WSAData *)" (?WSAStartup@@$$J18YGHGPAUWSAData@@@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
1>C:\Projects\test\Debug\test.exe : fatal error LNK1120: 4 unresolved externals
1>Build log was saved at "file://c:\Projects\test\test\Debug\BuildLog.htm"
1>test - 5 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
А вот сам исходник.
Код:
#include "stdafx.h"
#include "Form1.h"
#include "winsock2.h"
using namespace test;
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
WSADATA wsaData;
SOCKET s;
WSAStartup(MAKEWORD(2,2), &wsaData);
s = socket(AF_INET,SOCK_STREAM,0);
// Enabling Windows XP visual effects before any controls are created
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
// Create the main window and run it
Application::Run(gcnew Form1());
return 0;
}
Помогите пожалуйста разобраться.
|
|
|

20.02.2009, 16:07
|
|
Познающий
Регистрация: 22.01.2007
Сообщений: 40
С нами:
10157510
Репутация:
4
|
|
Итак попытка номер пять ). Патчему вывод из смд не перенаправляется? Паапки! Куку )
#include "stdafx.h"
#include "windows.h"
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#pragma hdrstop
int main()
{
STARTUPINFOA si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
ZeroMemory( &pi, sizeof(pi) );
SECURITY_ATTRIBUTES secat;
secat.nLength = sizeof(SECURITY_ATTRIBUTES);
secat.bInheritHandle = TRUE;
secat.lpSecurityDescriptor = NULL;
HANDLE read_stdout,newstdout;
CreatePipe(&read_stdout,&newstdout,&secat,0)
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
si.hStdOutput=newstdout;
//si.cb;
GetStartupInfoA(&si);
CreateProcessA("C:\\WINDOWS\\system32\\cmd.exe", " /k dir", NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
DWORD bytes; //кол-во прочитанных байт
DWORD avail; //кол-во доступных байт
char buf[1023];
PeekNamedPipe(read_stdout, buf, 1023, &bytes, &avail, NULL);
ReadFile(read_stdout, buf, 1023, &avail, NULL);
std::cout << buf;
std::cin.get();
}
|
|
|

20.02.2009, 16:39
|
|
Познающий
Регистрация: 15.01.2009
Сообщений: 37
С нами:
9115288
Репутация:
26
|
|
Объясниет на пальцах как в 6м Борланд Билдере определять количесво памяти и делать консольные приложения не привязаные к либам на данном кампутере? С синтаксисом я там буду сам уже ковырять, пока самое начало.
|
|
|

20.02.2009, 17:20
|
|
Познающий
Регистрация: 15.01.2009
Сообщений: 37
С нами:
9115288
Репутация:
26
|
|
woohoo! Hello world!
|
|
|

20.02.2009, 18:19
|
|
Участник форума
Регистрация: 27.04.2008
Сообщений: 224
С нами:
9494306
Репутация:
313
|
|
Понял ошибку. Не добавил
#pragma comment( lib, "wsock32.lib" )
|
|
|

21.02.2009, 16:36
|
|
Участник форума
Регистрация: 27.04.2008
Сообщений: 224
С нами:
9494306
Репутация:
313
|
|
Как конвертировать массив char в тип String?
массив могу создавать или так
char buf[1024];
или так
char *buf = new char[1024];
|
|
|

21.02.2009, 16:49
|
|
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
С нами:
9320830
Репутация:
86
|
|
Сообщение от Kuzya
Как конвертировать массив char в тип String?
массив могу создавать или так
char buf[1024];
или так
char *buf = new char[1024];
Если не ошибаюсь то все очень просто.
Код:
char buf[1024];
или так
char *buf = new char[1024];
string test = buf;
|
|
|

21.02.2009, 18:17
|
|
Участник форума
Регистрация: 20.02.2009
Сообщений: 224
С нами:
9063321
Репутация:
274
|
|
или так:
char buff[]="Hello word!";
string str(buff);
|
|
|
|
 |
|
|
Здесь присутствуют: 4 (пользователей: 0 , гостей: 4)
|
|
|
|