Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Вежливость-главное оружие
 Аватар для some_name
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446

Передать string из C# в качестве char* в с++ ClassLibrary

15.11.2014, 12:45. Показов 1063. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Написал небольшой класс обертку(ClassLubrary) на с++. Класс подключает библиотеки openCV, содежит один метод. Его листинг:

HoughTransformator.cpp
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// This is the main DLL file.
 
#include "stdafx.h"
 
#include "HoughTransformator.h"
 
using namespace HoughTransform;
 
int HoughTransformator::Transform(){
    return Transform("scan-1.png", " ");
}
 
int HoughTransformator::Transform(string sourcePath, string targetPath){         
 
    Mat src = imread(sourcePath, 0);
    if(src.empty()) return -1;
    Mat dst, cdst;
    Canny(src, dst, 50, 200, 3);
    cvtColor(dst, cdst, CV_GRAY2BGR);
 
#if 0
    vector<Vec2f> lines;
    HoughLines(dst, lines, 1, CV_PI/180, 100, 0, 0 );
 
    for( size_t i = 0; i < lines.size(); i++ )
    {
        float rho = lines[i][0], theta = lines[i][1];
        Point pt1, pt2;
        double a = cos(theta), b = sin(theta);
        double x0 = a*rho, y0 = b*rho;
        pt1.x = cvRound(x0 + 1000*(-b));
        pt1.y = cvRound(y0 + 1000*(a));
        pt2.x = cvRound(x0 - 1000*(-b));
        pt2.y = cvRound(y0 - 1000*(a));
        line( cdst, pt1, pt2, Scalar(0,0,255), 3, CV_AA);
    }
#else
    vector<Vec4i> lines;
    HoughLinesP(dst, lines, 1, CV_PI/180, 50, 50, 10 );
    for( size_t i = 0; i < lines.size(); i++ )
    {
        Vec4i l = lines[i];
        line( cdst, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0,0,255), 3, CV_AA);
    }
#endif
    imshow("source", src);
    imshow("detected lines", cdst);
    waitKey();
    return 0;
}



HoughTransformator.h
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// HoughTransformator.h
#pragma once
#include "opencv2\highgui\highgui.hpp"
#include "opencv2\imgproc\imgproc.hpp"
 
using namespace cv;
using namespace std;
 
using namespace System;
 
namespace HoughTransform {
 
    public ref  class HoughTransformator
    {
    public:
        int Transform(string sourcePath, string targetPath);
        int Transform();
    };
}



На стороне .net:
Подключил:
C#
1
using HoughTransform;
Когда у меня в коде есть такие строки, т.е. я пытаюсь использовать это ClassLibrary:
C#
1
2
HoughTransformator ht = new HoughTransformator();
ht.Transform();
Вываливается такое исключение:


1. Чем вызвано исключение?
2. Как мне передать в этот метод строку из C#?

Заранее спс!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2014, 12:45
Ответы с готовыми решениями:

Как передать символ в функцию (const char *string)
Мне нужно передать в функцию atof символы F, F, S, S, но когда я пытаюсь так сделать ошибка invalid conversion from 'char' to 'const...

Как в стандартную функцию WinAPI передать тип данных std::string вместо char*?
Помогите пожалуйста. Мне надо в GetDlgItemText передать std::string. Как это можно сделать? Вижуалка говорит, что нельзя преобразовать...

есть массив char. есть строка string. как присвоить значению string-a значение char-a?
есть массив char. есть строка string. как присвоить значению string-a значение char-a?

5
Кодогенератор
 Аватар для hepper
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
15.11.2014, 17:06
1-отсутствует библиотека HoughTransform, либо библиотека/зависимость на которую она ссылается
0
Вежливость-главное оружие
 Аватар для some_name
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
15.11.2014, 20:37  [ТС]
Еще вопрос. У меня вот эти строки:
C#
1
2
HoughTransformator ht = new HoughTransformator();
ht.Transform();
работают когда я жму на кнопку.

А исключение я получаю еще при загрузке.

Почему?

Добавлено через 53 секунды
Т.е. до тех пор пока я на кнопку не нажму, они не начнут выполняться

Добавлено через 1 минуту
ААА, это из-за того что при запуске подгружаются все нужные библотеки и проверяется их валидность. А так как моя библиотека судя по всему плохая, то поэтому и бросается исключание.
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
15.11.2014, 22:21
На заметку
http://www.emgu.com/wiki/index.php/Main_Page
0
Вежливость-главное оружие
 Аватар для some_name
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
16.11.2014, 00:45  [ТС]
А что со строками делать?
Как передать?
0
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
16.11.2014, 21:54
А framework (с++,c#) у вас одинаковые используются ? Строки КАКИЕ ? Если не УПРАВЛЯЕМЫЕ то передаются кажись просто как указатель на char.

Добавлено через 8 минут
C++
1
int Transform(System::String ^ s)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2014, 21:54
Помогаю со студенческими работами здесь

Передача в функцию char*([Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings])
Почему компилятор на это матерится? ObjA.Show(&quot;A&quot;); deprecated conversion from string constant to 'char*' #include &lt;iostream&gt;...

Строка: чем отличается строки string, char, char*?
Помогите разобраться,совсем плохо идёт,чем отличается строки string,char,char* И если можно пару примеров Буду весьма признательна

Как из объекта String получить char* (НЕ const char*)
Доброго времени! Стандартная процедура работы с SD-card принимает параметр типа char *. Однако, объект String имеет метод(c_str)который...

Подскажите, пожалуйста, как преобразовать данные из excel в string или в char*, char perm [] в visual c++
Подскажите, пожалуйста, как преобразовать данные из excel в string или в char*, char perm также для вывода на экран среда visual c++ ...

WinSock как передать unsigned char а не char
Делаю программу &quot;клиент&quot; для сети (консоль), для этих целей использую winsock, возникла проблема в том что я не могу передать переменную...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru