Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
tur9
43 / 4 / 1
Регистрация: 20.08.2012
Сообщений: 89
#1

DLL 32 и 64 в C++ 2010 - C++

26.02.2013, 22:25. Просмотров 1727. Ответов 25
Метки нет (Все метки)

Написал простой dll, откомпилировал его в VC 2010 подключаю к матлабу, который ругается что dll создан 32 битным компилятором, а нужен 64 битный. Подскажите пожалуйста как в VC 2010 откомпилировать 64 битным компилятором? Какие нужны настройки?

У меня вин7 64 бита
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2013, 22:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос DLL 32 и 64 в C++ 2010 (C++):

Подключение dll в MSVS 2010 C++ - C++
Код: __declspec(dllimport) int summe(int a); void main(){ summe(3); } При компиляции выдает следующую ошибку: error LNK2019:...

Создание .dll в MSVC 2010 в чем ошибка? - C++
Проблема в чем.. есть dll с тремя функциями... Скомпилировал и пытался подключить на другом ноуте к проекту... Но не известно по какой...

Указатели в VC++ (2010) DLL и в приложении C++Builder (RAD XE4) - C++
Здравствуйте! Есть такая ситуация: в приложении происходит вызов функции из библиотеки, в которую надо передать vector<wchar_t*>*. Когда...

Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями? - C++
Движок перевожу на платформу Win64 и нужно, чтобы разрядность ЕХЕ и DLL совпадали, а в интернете искал 64-битные версии ogg.dll, vorbis.dll...

Точка входа в процедуру InterlockedCompareExchange64 не найдена в библиотеке DLL KERNEL32.DLL - C++
День добрый! При запуске моей программы (много моего кода + много разных сторонних dll) на WinXP SP2, получаем соответствующую ошибку...

Добавление своей dll в список dll подгружаемых процессом чужого процесса - C++
Вообще вопрос такой,как можно внедрить свою dll в список Import чужого не запущенного процесса?Не изменяя структуры файла.

25
tur9
43 / 4 / 1
Регистрация: 20.08.2012
Сообщений: 89
27.02.2013, 22:23  [ТС] #16
По умолчанию автоматом создается этот файл
Код
// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
	case DLL_THREAD_ATTACH:
	case DLL_THREAD_DETACH:
	case DLL_PROCESS_DETACH:
		break;
	}
	return TRUE;
}
Мой h файл
Код
// targ1.h
void LetterList();
int PutInt(int);
int sum2num(int, int);
Код
// targ1.cpp : Defines the exported functions for the DLL application.

#include "stdafx.h"
#include <iostream>

extern "C++"__declspec(dllexport) void LetterList()
{ 
	std::cout << "This function was called from LetterList() " << std::endl; 
} 

extern "C++" __declspec(dllexport) int PutInt(int param) 
{ 
	return param; 
}

extern "C++" __declspec(dllexport) int sum2num(int num1, int num2) 
{ 
	return num1 + num2; 
}
вызов длл-я
Код
// call_dll_1_console.cpp : Defines the entry point for the console application.

#include "stdafx.h"
#include "targ1.h"
#include <iostream>
#include <conio.h>

int _tmain(int argc, _TCHAR* argv[])
{
	int x = PutInt(5);
	LetterList();
	int a(3), b(7), y;
	y = sum2num(a, b);
	std::cout<<x;
	std::cout<<y;
	_getch();
	return 0;
}
Так я и не смог пока понять как ты получил картинку файла где битность видна в тотале.
Если не сложно объясни.
0
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
27.02.2013, 22:32 #17
Цитата Сообщение от tur9 Посмотреть сообщение
Так я и не смог пока понять как ты получил картинку файла где битность видна в тотале.
поставь ту версию тотала какая и у меня , найди свою длл и нажми f3, а по поводу кода - подожди чуть , сейчас гляну

Добавлено через 1 минуту
да и ещё ты её статичечки или динамически хочеш подключать ? Просто по коду это больше похоже на статическую

Добавлено через 2 минуты
Цитата Сообщение от tur9 Посмотреть сообщение
extern "C++" __declspec(dllexport) int sum2num(int num1, int num2)
ЧТО ЭТО ТАКОЕ ? Ты экспортируеш длл в стиле с++ ? Зачем ? Там же имена будут искажены , экспорт делай в стиле "С"

Добавлено через 1 минуту
ушёл на пол часа , приду посмотрю , а ты пока подумай над тем что я тебе сказал
0
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
27.02.2013, 22:34 #18
еще есть альтернатива для подключения своего функционала и вроде даже более правильная:
мех-файлы. от необходимости правильной сборки она не избавляет, но может быть полезна:
http://ru.wikipedia.org/wiki/MATLAB#MEX-.D1.84.D0.B0.D0.B9.D0.BB.D1.8B
0
tur9
43 / 4 / 1
Регистрация: 20.08.2012
Сообщений: 89
27.02.2013, 23:06  [ТС] #19
DU, спасибо за ссылку, правда маловато там чтобы понять.
Проблема у меня такая: программа на матлабе когда доходит до определенной функции поиска контуров на картинке, на матрице делает это медленно. Единственное решение я вижу вызвать тот же алгоритм, написанный на чем то быстром, на си например. Мне все равно dll или mex файлы. Я готов разбираться и с тем и с другим. Единственная моя проблема в том, чтобы понять как это делать. Ты знаешь как делать mex-файлы?

- ЧТО ЭТО ТАКОЕ ? Ты экспортируеш длл в стиле с++ ? Зачем ? Там же имена будут искажены , экспорт делай в стиле "С"
мне все равно в чем делать, скажешь в си - буду в си. Просто я пример нашел такой, вот и сделал.

-да и ещё ты её статичечки или динамически хочеш подключать ?
разве к матлабу можно статически? может mex-файлы это и есть статический способ подключения? я предполагал в начале подключать динамически, т.е. чтобы потом вызывать через loadlibrary. мне все равно как подключать лишь бы программа работала в конце.

- поставь ту версию тотала какая и у меня , найди свою длл и нажми f3
так я поставил такую же как и у тебя версию 756а, но интерфейс совсем другой, как и у меня в восьмой версии. Не понимаю там как битность увидеть
0
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
27.02.2013, 23:12 #20
Цитата Сообщение от tur9 Посмотреть сообщение
мне все равно в чем делать, скажешь в си - буду в си. Просто я пример нашел такой, вот и сделал.
я тебе говорю , что пиши программу на с++, но экспорт функций делай на С.
Цитата Сообщение от tur9 Посмотреть сообщение
разве к матлабу можно статически? может mex-файлы это и есть статический способ подключения? я предполагал в начале подключать динамически, т.е. чтобы потом вызывать через loadlibrary. мне все равно как подключать лишь бы программа работала в конце.
к матлабу наврят ли можно статически , а вот в твоей программе которая вызывает функции из длл , ты именно статически подключаеш.
Сейчас посмотрю твой текст,далеко не убегай
0
tur9
43 / 4 / 1
Регистрация: 20.08.2012
Сообщений: 89
27.02.2013, 23:21  [ТС] #21
пиши программу на с++, но экспорт функций делай на С.
ОК, нет проблем, дай образец, сделаю по нему.
а вот в твоей программе которая вызывает функции из длл , ты именно статически подключаеш
это понятно, а в твоем коде ты подключаешь через loadlibrary, т.е. динамически. mex-файлы должны подключаться статически.
- далеко не убегай
да я последние несколько дней не могу больше ничем заниматься кроме этого, так приперло, что кранты
0
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
28.02.2013, 00:00 #22
прошу твоя длл с твоими функциями и подключение длл к программе динамически
1
Вложения
Тип файла: rar Prog & DLL.rar (4.84 Мб, 11 просмотров)
tur9
43 / 4 / 1
Регистрация: 20.08.2012
Сообщений: 89
28.02.2013, 01:28  [ТС] #23
здорово!! ))))))

но это еще не все, завтра попробую это к матлабу подключить

еще дал бы ты мне ссылку на свой тотал, а то я всю сеть излазил, везде одно и то же как у меня в 8-ой версии
0
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
28.02.2013, 09:30 #24
tur9, я даже уже и не помню где я его брал.вечером поищу.
0
tur9
43 / 4 / 1
Регистрация: 20.08.2012
Сообщений: 89
28.02.2013, 13:44  [ТС] #25
твой длл заработал в матлабе!

это начало!

теперь у меня будут к тебе несколько вопросов по коду и длл, позднее их напишу.
0
tur9
43 / 4 / 1
Регистрация: 20.08.2012
Сообщений: 89
04.03.2013, 20:33  [ТС] #26
Вот написал что хотел для начала Простейший DLL на С и его loadlibrary in matlab

Игорь, спасибо!
0
04.03.2013, 20:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2013, 20:33
Привет! Вот еще темы с ответами:

Как узнать путь к загруженной DLL из самой DLL? - C++
Создаю небольшую программку в папке c:/test/app/, есть DLL в папке c:/test/dll/. В коде самой dll, после её подгрузки в программу, можно...

Dll файл в exe файле. Вшить dll libcurl - C++
Проблема такая что приходится таскать всегда libcurl.dll с собой. Надо все носить в одном exe. Enigma Virtual Box использовать нельзя,...

Запись из внедренной dll в другую dll этого процесса - C++
main.cpp #include &lt;Windows.h&gt; extern int writeprocess(); DWORD WINAPI MainThread(LPVOID lpParam) { ...

Windows I/o без Kernel32.dll и Advapi32.dll - C++
Добрый день. Необходимо в Windows XP SP3 распечатать в стандартный поток &quot;some text here&quot; без прямого или косвенного использования...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru