Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2010, 11:05   #1
bigory
Пользователь
 
Регистрация: 04.06.2009
Сообщений: 46
По умолчанию Создание библиотеки

Всем доброе время суток!
Вот решил совместить 2 программы написанные на Java и Microsoft Visual Studio 2008 на C++
Значит что касается С++, нужно написать отдельную библиотеку, которая при запросе проверяет занятую оперативную память. Имею ввиду, вот включена ОС, запущены приложении, играет музыка и прочее, вот мне и нужно определить общую занимаемую оперативную память. После того как определилось, на выход передать параметры в виде числа (int или что-то другое). Это чтобы программа на языке java могла с ними дальше работать.
bigory вне форума Ответить с цитированием
Старый 19.09.2010, 11:42   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в чем проблема то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.09.2010, 12:19   #3
bigory
Пользователь
 
Регистрация: 04.06.2009
Сообщений: 46
По умолчанию

Вопрос в том, как определить общую занимаемую оперативную память на данный момент и как сделать библиотеку чтоб состыковать ее с javа
bigory вне форума Ответить с цитированием
Старый 19.09.2010, 12:22   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

GlobalMemoryStatus вам поможет.

я так полагаю вам DLL надо?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.09.2010, 12:56   #5
bigory
Пользователь
 
Регистрация: 04.06.2009
Сообщений: 46
По умолчанию

Именно DLL написанный на Си++
bigory вне форума Ответить с цитированием
Старый 19.09.2010, 13:04   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://programmersforum.ru/showthread.php?t=38078
вот тут о написании DLL(вам нужно с DEF файлом)

функция будет выглядеть по типу
Код:
int PhysMem()
{
    MEMORYSTATUS ms;
    ms.dwLength=sizeof(ms);
    GlobalMemoryStatus(&ms);
    return (ms.dwTotalPhys-ms.dwAvailPhys);
}
(про #include <windows.h> не забываем)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.09.2010, 13:07   #7
bigory
Пользователь
 
Регистрация: 04.06.2009
Сообщений: 46
По умолчанию

Про GlobalMemoryStatus нашел хорошую статью, но это не то
Структура TMemoryStatusEx позволяет получить информацию про текущее состояние физической и виртуальной памяти, включая расширенную память.
Функция GlobalMemoryStatus позволяет получить информацию про текущее использование системой как физической, так и виртуальной памяти
А мне нужно определить оперативную память. Или я тут туплю?
bigory вне форума Ответить с цитированием
Старый 19.09.2010, 13:12   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а физическая память это и есть оперативная
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.09.2010, 13:20   #9
bigory
Пользователь
 
Регистрация: 04.06.2009
Сообщений: 46
По умолчанию

Да, студент точно устал от курсовой)) Спасибо Вам большое!)) Буду пробовать прописывать библиотеку в джаву и получать из нее инфу
bigory вне форума Ответить с цитированием
Старый 19.09.2010, 15:35   #10
bigory
Пользователь
 
Регистрация: 04.06.2009
Сообщений: 46
По умолчанию

Теперь вот такая проблема, значит написа код в дос режиме, все работает

Код:
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>

#define DIV 1024

#define WIDTH 7

void main(int argc, char *argv[])
{
  MEMORYSTATUSEX statex;

  statex.dwLength = sizeof (statex);

  GlobalMemoryStatusEx (&statex);

  printf ("There is  %*ld percent of memory in use.\n",
          WIDTH, statex.dwMemoryLoad);
  printf ("There are %*I64d total Kbytes of physical memory.\n",
          WIDTH, statex.ullTotalPhys/DIV);
  printf ("There are %*I64d free Kbytes of physical memory.\n",
          WIDTH, statex.ullAvailPhys/DIV);
  printf ("There are %*I64d total Kbytes of paging file.\n",
          WIDTH, statex.ullTotalPageFile/DIV);
  printf ("There are %*I64d free Kbytes of paging file.\n",
          WIDTH, statex.ullAvailPageFile/DIV);
  printf ("There are %*I64d total Kbytes of virtual memory.\n",
          WIDTH, statex.ullTotalVirtual/DIV);
  printf ("There are %*I64d free Kbytes of virtual memory.\n",
          WIDTH, statex.ullAvailVirtual/DIV);

  printf ("There are %*I64d free Kbytes of extended memory.\n",
          WIDTH, statex.ullAvailExtendedVirtual/DIV);
}
Преблема теперь в том, что я пытаюсь присвоить все значения к переменным
Вот создаю библиотеку

library.h
Код:
#ifndef LIBRARYH
#define LIBRARYH

extern "C" _declspec(dllexport) void MemoryDll( int*, int*, int*, int*, int*, int*, int*, int* );

#endif
Course.cpp
Код:
#include <windows.h>
#include <stdio.h>

#define DIV 1024
#define WIDTH 7

extern "C" _declspec(dllexport) void MemoryDll( int *a, int *b, int *c, int *d, int *e, int *f, int *g, int *h )
{
	  MEMORYSTATUSEX statex;
	  statex.dwLength = sizeof (statex);
	  GlobalMemoryStatusEx (&statex);
	  a=WIDTH, statex.dwMemoryLoad;
	  b=WIDTH, statex.ullTotalPhys/DIV;
	  c=WIDTH, statex.ullAvailPhys/DIV;
	  d=WIDTH, statex.ullTotalPageFile/DIV;
	  e=WIDTH, statex.ullAvailPageFile/DIV;
	  f=WIDTH, statex.ullTotalVirtual/DIV;
	  g=WIDTH, statex.ullAvailVirtual/DIV;
	  h=WIDTH, statex.ullAvailExtendedVirtual/DIV;
}
Вот что выдает
Код:
1>------ Build started: Project: library, Configuration: Debug Win32 ------
1>Compiling...
1>Source.cpp
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(12) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(13) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(14) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(15) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(16) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(17) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(18) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(19) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>Build log was saved at "file://c:\Documents and Settings\Игорь\Мои документы\Visual Studio 2008\Projects\library\library\Debug\BuildLog.htm"
1>library - 8 error(s), 0 warning(s)
Как мне присвоить значения к переменным?
bigory вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание и вызов библиотеки dll DM_bite Помощь студентам 3 15.06.2010 12:47
Создание библиотеки *.LIB в С++ creator32 Помощь студентам 0 14.12.2009 20:26
Библиотеки в c++ Яр|/||< (^_^) Общие вопросы C/C++ 1 07.12.2009 14:30
библиотеки ShenDy Общие вопросы C/C++ 5 25.07.2008 21:45