您的位置:程序门 -> c/c++ -> c++ 语言



c++新手提问


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


c++新手提问
发表于:2007-06-22 09:21:40 楼主
请问:编译出这种错是什么原因:
错误 6 error   lnk2028:   无法解析的标记(0a000005)   "bool   __clrcall   donegmu(unsigned   char   *,int,int,int,char   *) "   (?donegmu@@$$fym_npaehhhpad@z),该标记在函数   "int   __clrcall   main(cli::array <class   system::string   ^   > ^) "   (?main@@$$hymhp$01ap$aavstring@system@@@z)   中被引用 test13.obj

再把原码附上:
//   test13.cpp:   主项目文件。

#include   "stdafx.h "
#include   "stdio.h ";
#include   "windows.h ";
#include   "domegmucode.h "
using   namespace   system;

int   main(array <system::string   ^>   ^args)
{
domegmucode::datadotencoder   donegmu;
hinstance   myhan;
unsigned   char     encodedata;
char   *   barname= "112333.bmp ";
        bool   ref;  
if   (null==(myhan=loadlibrary(text( "gmuensdk.dll "))))
{
printf( "动态库调用失败 ");
exit(0);
}
printf( "请输入生成gmu码的内容: ");
scanf( "%s ",&encodedata);
printf( "%s ",&encodedata);
if(null==encodedata)
{
printf( "生成gmu码内容不能为空 ");
exit(0);
}
ref=donegmu(&encodedata,80,300,600,barname);
if   (!ref);
{
printf( "动态库调用失败 ");
exit(0);
}
freelibrary(myhan);
return   0;
}


#pragma   once


ref   class   domegmucode
{
public:
domegmucode(void);
typedef   bool(__stdcall   datadotencoder)(
          unsigned   char*   in_data,  
                  int   data_len,  
                  int   dpi,  
                  int   dot_dis,  
                  char*   out_bmp_file);

};

发表于:2007-06-22 09:27:041楼 得分:0
提示很清楚啊,有一个函数没找到定义。
你domegmucode.cpp加入工程没有?
发表于:2007-06-22 09:35:132楼 得分:0
它是在工程里面呀,在资源文件里面的
发表于:2007-06-22 09:41:413楼 得分:0
donegmu(&encodedata,80,300,600,barname);
你没有这么一个接受这么多参数的构造函数呀?
发表于:2007-06-22 09:46:494楼 得分:0
有呀!上面代码中有呀,在头文件里面定义了一个动态库函数呀!就是这个:
ref   class   domegmucode
{
public:
domegmucode(void);
typedef   bool(__stdcall   datadotencoder)(
          unsigned   char*   in_data,  
                  int   data_len,  
                  int   dpi,  
                  int   dot_dis,  
                  char*   out_bmp_file);

};
发表于:2007-06-22 09:50:415楼 得分:0
我是从delphi想转到c++的亲手,请指点下,应该注意点什么,怎么样才能更好地灵活使用它
发表于:2007-06-22 09:52:026楼 得分:0
兄弟啊,你typedef了一个类型,声明了一个无参构造函数,没有声明这个需要5个参数的构造函数。
真是新新手啊,最基本的语法都还没学好。应该再回去认认真真看看教材的。
发表于:2007-06-22 09:54:187楼 得分:0
建议你忘了自己会的delphi,买本c++   primer从头认真学。
c++和delphi的差距是很大很大的。
发表于:2007-06-22 09:55:428楼 得分:0
我调用的是下面动态库里面的一个函数呀,是不是这样定义呀,而不是上面的无参过程的
发表于:2007-06-22 10:03:069楼 得分:0
抱歉,上面没认真看你的代码,你这个和构造函数无关。
只是你的donegmu在哪进行赋初值了?
发表于:2007-06-22 10:16:5410楼 得分:0
在引用它的时候,先定义了它,domegmucode::datadotencoder   donegmu;
但我不知还要赋初值,怎么样给它赋初值呀
发表于:2007-06-22 10:22:2011楼 得分:0
那么,你到底要调用哪个函数呢?它的实现在哪?
发表于:2007-06-22 10:29:0312楼 得分:0
是要调用下面的库函数的,在主函数main()下面调用它的!
发表于:2007-06-22 10:35:0013楼 得分:0
那你也得从dll里getprocaddress把它的地址拿出来了才能用呀。
发表于:2007-06-22 10:36:5714楼 得分:0
哦!这里我忘了写了,我再试试!
发表于:2007-06-22 10:44:1815楼 得分:0
代码真乱,   完全看不懂
发表于:2007-06-22 10:51:3416楼 得分:0
现在是这种出错了:错误 5 error   c2659:   “=”:   作为左操作数 e:\c#.net\test13\test13\test13\test13.cpp 29
我想问一下,动态库函数是不是不能定义在头文件里面呀
发表于:2007-06-22 10:52:1617楼 得分:0
代码:
int   main(array <system::string   ^>   ^args)
{
domegmucode::datadotencoder   donegmu;
hinstance   myhan;
unsigned   char     encodedata;
char   *   barname= "112333.bmp ";
        bool   ref;  
if   (null==(myhan=loadlibrary(text( "gmuensdk.dll "))))
{
printf( "动态库调用失败 ");
exit(0);
}
printf( "请输入生成gmu码的内容: ");
scanf( "%s ",&encodedata);
printf( "%s ",&encodedata);
if(null==encodedata)
{
printf( "生成gmu码内容不能为空 ");
exit(0);
}
donegmu   =   getprocaddress(myhan, "datadotencoder ");
if(null==donegmu)
{
printf( "动态库函数调用失败 ");
exit(0);
}
ref=donegmu(&encodedata,80,300,600,barname);
if   (!ref)
{
printf( "动态库调用失败 ");
exit(0);
}
freelibrary(myhan);
return   0;
}
发表于:2007-06-22 10:59:2318楼 得分:0
donegmu   =   getprocaddress(myhan, "datadotencoder ");
是这一行吧?
typedef   bool(__stdcall     *   datadotencoder)(
          unsigned   char*   in_data,  
                  int   data_len,  
                  int   dpi,  
                  int   dot_dis,  
                  char*   out_bmp_file);
加一个*号。
发表于:2007-06-22 11:05:1219楼 得分:0
对,是那一行出错,哪个地方加*呀
发表于:2007-06-22 11:48:0820楼 得分:0
兄弟再说说错在哪吧,还是哪个出错呀,因为这是第一个c++程序了
发表于:2007-06-22 12:16:1321楼 得分:0
就那么3个*对2个*,你怎么就找不到多了哪个*呢。认真仔细点嘛。
发表于:2007-06-22 12:22:3422楼 得分:0
c++程序还用那么多printf干撒

一开始就完全就c++的风格吧   偶正在转型
发表于:2007-06-22 12:23:2423楼 得分:0
taodm大哥真厉害!
发表于:2007-06-22 12:40:0124楼 得分:0
调用的时候少了一个参数
发表于:2007-06-22 14:28:5325楼 得分:0
还是那句话出错呀,兄弟救救我吧,第一个程序怎么这样呢,看看改后的代码:
#include   "stdafx.h "
#include   "stdio.h ";
#include   "windows.h ";
#include   "domegmucode.h "
using   namespace   system;

int   main(array <system::string   ^>   ^args)
{
domegmucode::datadotencoder   donegmu;
hinstance   myhan;
unsigned   char   *   encodedata;
char   *   barname= "112333.bmp ";
        bool   ref;  
if   (null==(myhan=loadlibrary(text( "gmuensdk.dll "))))
{
printf( "动态库调用失败 ");
exit(0);
}
printf( "请输入生成gmu码的内容: ");
scanf( "%s ",encodedata);
printf( "%s ",encodedata);
if(null==encodedata)
{
printf( "生成gmu码内容不能为空 ");
exit(0);
}
donegmu   =   getprocaddress(myhan,(lpcstr) "datadotencoder ");
if(null==donegmu)
{
printf( "动态库函数调用失败 ");
exit(0);
}
ref=donegmu(encodedata,80,300,600,barname);
if   (!ref)
{
printf( "动态库调用失败 ");
exit(0);
}
freelibrary(myhan);
return   0;
发表于:2007-06-22 14:37:1226楼 得分:0
那个typedef处的*号加了没有?
发表于:2007-06-22 14:38:1327楼 得分:0

donegmu   =   (domegmucode::datadotencoder)getprocaddress(myhan,(lpcstr) "datadotencoder ");
发表于:2007-06-22 14:55:0228楼 得分:0
现在改过以后,发现ref=donegmu(encodedata,80,300,600,barname);ref总是为false,会是什么原因呀
发表于:2007-06-22 14:58:1929楼 得分:0
那只能问你自己了。你得去查你调用的函数是啥功能了。
发表于:2007-06-22 15:05:5630楼 得分:0
非常thank   you   very   much!虽然还没完成,我再看看了
发表于:2007-06-22 16:06:1631楼 得分:0
该回复于2007-12-28 13:09:13被管理员或版主删除


快速检索

最新资讯
热门点击