小编Gre*_*rey的帖子

如何在c#中使用C dll头文件库

我是C#的新手,我正在尝试为我的项目使用帮助包.包是用c编写的,有1)/ bin /几个.dll文件2)/ include /有一个头文件3)/ lib/msvc/.lib文件我的问题是如何在我的C#WPF项目中使用这些文件?我知道C#中没有"#include",并且无法通过添加到项目的引用来导入.dll.那我怎么能在C#中做到这一点?

谢谢

.net c# wpf pinvoke interop

1
推荐指数
1
解决办法
5192
查看次数

Visual Studio 2010中的dll导出/导入问题

我写了一个visual c ++ win32控制台应用程序,我写了它并测试了它

win32控制台项目

.然后我切换到

win32项目

并导入所有源文件并为其创建一个dll.通过标记我想要导出的类

#define DllExport   __declspec( dllexport )

class DllExport theClass {
} 
Run Code Online (Sandbox Code Playgroud)

它工作,并生成DLL.然后我创建了另一个c#项目,并希望将dll添加到项目中.通过引用 - >添加引用 - >浏览器.然后我选择那个DLL.然后它给了我一个错误

无法添加对'''''''的引用.请确保该文件是可访问的,这是一个有效的程序集或com组件.

谁知道我在哪里生错误/生成/导入dll?

谢谢

.net c# c++ dll dllimport

1
推荐指数
1
解决办法
2624
查看次数

C指针写错误

 void fileNameProcess(char * inputName){
             int size =strlen(inputName);
             bool change=false;
             char * name=inputName;

             for(int i =0; i<size; i++){
                 char temp=* (name+i);
                 if(temp<0x10||temp>0x5b){
                     change=true;
                 }else if(0x19<temp<0x21){
                     change=true;
                 }else if(0x3a<temp<0x41){
                     change=true;
                 }
                 if(change){
                     //*(name+i)='_';
                     memset(name+i, '_', 1);
                     change=false;
                 }
             }

         }
Run Code Online (Sandbox Code Playgroud)

当我尝试在字符串(memeset)中设置一个字符时,它会中断,但我不明白为什么它不允许我这样做?为什么我可以允许访问读取但无法修改它?任何人都可以在记忆方面解释它.我想这是因为字符串被传递到函数中.但只要我知道记忆的位置,我可以把它设置好吗?

谢谢

char * filename= strdup("try1.mat");
    writter.locate(filename);
Run Code Online (Sandbox Code Playgroud)

在找到它时,将文件名指定给类memeber char*filepath

c pointers

1
推荐指数
1
解决办法
140
查看次数

c malloc问题

#include<stdlib.h>
#include<stdio.h>

int main(){

 int row;
 int col;
 int i=1;
 double ** doubleNode;
 // *(*(doubleNode+row)+coln)
 doubleNode=malloc(sizeof(double)*4);
 *doubleNode=malloc(sizeof(double *)*4);


 for(row=0; row <4; row++){
   for(col =0; col<4;col++){
    *(*(doubleNode+row)+col)=i;
    i++;
   }
 }


free(doubleNode);
free(*doubleNode);
 return 0; 
}
Run Code Online (Sandbox Code Playgroud)

这是双指针的测试代码.它用gcc编译好,但是当我运行它时.它给了我分段错误.你知道我哪里做错了吗?

谢谢

c malloc

1
推荐指数
1
解决办法
209
查看次数

c printf用于宏定义类型

我在if宏中有一个typedef ,类似于:

#ifdef BLA_BLA
typedef int typeA
#elseif 
typedef double tyeA
#endif
printf("%d" , a); printf("%l" , a);
Run Code Online (Sandbox Code Playgroud)

我想知道在为这种情况编写printf时最好的方法是什么?(%d%l).

我知道我也可以在宏中定义一个固定的字符串.但这是最好的方式吗?

c

1
推荐指数
1
解决办法
1085
查看次数

铸造浮动的问题 - 当fread时,在C中加倍

我在fread时从浮动到双重铸造有问题;

fread(doublePointer,sizeofFloat,500,f);
Run Code Online (Sandbox Code Playgroud)

如果我将双指针更改为浮点指针,它可以正常工作.但是,我需要它是laster on的双指针,我想当我从小数据类型(float)写入更大的数据类型(double)的内存时,它应该没问题.但事实证明它不像我预期的那样有效.这有什么问题,我该如何解决这个问题.

我知道我可以通过逐个转换来解决它.但我有大量的数据.我不想额外9000000+轮转换..这将是非常昂贵的.有什么技巧可以解决吗?

有没有c ++/c技巧

谢谢

c c++ file-io

0
推荐指数
1
解决办法
2895
查看次数

标签 统计

c ×4

.net ×2

c# ×2

c++ ×2

dll ×1

dllimport ×1

file-io ×1

interop ×1

malloc ×1

pinvoke ×1

pointers ×1

wpf ×1