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

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

Войти
Регистрация
Восстановить пароль
 
dqrest
2 / 2 / 0
Регистрация: 06.01.2012
Сообщений: 115
#1

Не могу вызвать функцию из dll С++ в С# в системе Win 7 64bit, MSVS 2008 - C++

22.07.2013, 10:45. Просмотров 542. Ответов 4
Метки нет (Все метки)

Здравствуйте! Уже два дня не могу вызвать функцию из dll C++ в программе, написанная в C#. Программа пишется в MS VS 2008 Win 7 64bit.

Сначала опишу С++ проект. Создаю обычное пустое C++ dll приложение.

Header файл main.h:

C++ (Qt)
1
2
3
// main.h
#include <stdio.h>
 __declspec(dllexport) void Demo();
Def файл main.def:

C++ (Qt)
1
2
3
LIBRARY "new1"
EXPORTS
    Demo @1
Cpp файл main.cpp:

C++ (Qt)
1
2
3
4
5
6
#include "main.h"
 
__declspec(dllexport) void Demo()
{
  printf("11111111111111111111");
}
Далее я создаю ConsoleApplication на С#
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
 
 
namespace ConsoleApplication2
{
    class Program
    {
        [DllImport(@"new1.dll", EntryPoint = "Demo")]
        public static extern void Demo();
        static void Main(string[] args)
        {            
            Demo();
        }
    }
}
Запускаю приложение на C# и вылетает ошибка:

Необработанное исключение: System.BadImageFormatException: Была сделана попытка
загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B
)
в ConsoleApplication2.Program.Demo()
в ConsoleApplication2.Program.Main(String[] args) в C:\Users\рашид\Documents\
Visual Studio 2008\Projects\ConsoleApplication2\ConsoleApplication2\Program.cs:с
трока 16

В чем проблема? Скажите плиз!!! Весь инет перелазил, ответа не нашел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2013, 10:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу вызвать функцию из dll С++ в С# в системе Win 7 64bit, MSVS 2008 (C++):

Не могу вызвать функцию из .dll - C++
Добрый день ... Полазил по форумам и гайдам .... Пишу такой вот header: extern &quot;C++&quot; __declspec(dllexport) int function (int,int); ...

Конвертировать с MsVS 2008 в MsVS 2010 - C++
У меня есть проект на MsVS 2008. Он состоит с нескольких файлов, которые потом подключаются в основной программе. Как можно сделать чтобы...

Как из DLL вызвать функцию, находящуюся в exe? - C++
Плз. скажите, как из DLL вызвать функцию, находящуюся в exe'шнике. Плз.! Плз.! Плз.!

Вызвать функцию из dll с неопределённым числом параметров - C++
Нужно вызвать из dll функцию с неопределённым числом параметров. пока что работаю с таким вызовом char res; char (*dll) (char* ...);...

Не могу вызвать функцию - C++
код функцииtemplate &lt;class T&gt;//Прямой void Tree&lt;T&gt;::streight(Node *root) { if(!root) return; // printf(&quot;%d. \&quot;%s\&quot;\n&quot;, ++cnt,...

Как вызвать функцию, описанную в DLL через Custom Action в wix? - C++
Не нашел подходящего раздела для вопроса, поэтому решил сделать здесь, тк DLL написана на c++! Вот сама DLL:#include &lt;stdio.h&gt; ...

4
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,535
Завершенные тесты: 1
22.07.2013, 11:23 #2
Цитата Сообщение от dqrest Посмотреть сообщение
C:\Users\рашид\Documents\
Попробуйте убрать русские символы в пути.
0
dqrest
2 / 2 / 0
Регистрация: 06.01.2012
Сообщений: 115
22.07.2013, 14:40  [ТС] #3
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Попробуйте убрать русские символы в пути.
Windows 7 хорошо понимает русские символы и большие буквы!!!
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,535
Завершенные тесты: 1
22.07.2013, 14:52 #4
Цитата Сообщение от dqrest Посмотреть сообщение
Windows 7
А студия?
0
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,389
22.07.2013, 15:01 #5
Нет, русские символы тут вообще ни при чем. Тебе ж компилятор на русским по белому объясняет: Необработанное исключение: System.BadImageFormatException: Была сделана попытка загрузить программу, имеющую неверный формат.

Т.е. скорее всего ты пытаешься загрузить 32-битную DLL в 64-битный процесс, либо наоборот. Проверь опции сборки для обоих проектов.
0
22.07.2013, 15:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2013, 15:01
Привет! Вот еще темы с ответами:

Не могу вызвать функцию через указатель - C++
Есть функция void matrixsqr(int **a, int N, int M) как ее вызвать через указатель на функцию Добавлено через 18 минут Неужели никто...

Ошибка приведения типов в MSVS 2008 - C++
for (AuraEffectList::const_iterator i......... ............. if (i==((AuraEffectList::const_iterator)NULL)) в линуксе компилируется...

Подключить DLL в проект MSVS 2008 - Visual C++
Сгенерировал для OpenGL32.dll DEF файл Borland-овской утилитой impdef, потом VS-шой утилитой lib сгенерировал import library, добавил в...

Переделать msvs 6 В msvs 2008 - Visual C++
приложение написано на визиал студия 6 хочу внести в него коррективы есть НО у меня стоит студия 2008 сам файл...


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

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

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